• 【java学习】数组中涉及的常见算法-含冒泡排序(11)



    1. 最大值、最小值、总和、平均数

    代码如下:

    
    public class Test1 {
    	public static void main (String[] args) {
    	
    		int[] arr = new int[] {4,2,7,1,3,5};
    
    		//最大值
    		int max = arr[0]; //假设arr[0]是目前的最大值
    		for(int i = 0; i < arr.length; i++) {
    			if(max < arr[i]) {
    				max = arr[i];  //把目前的最大值赋值给max
    			}
    		}
    		System.out.println("max =" + max);
    		
    		//最小值
    		int min = arr[0]; //假设arr[0]是目前的最小值
    		for(int i = 0; i < arr.length; i++) {
    			if(min > arr[i]) {
    				min = arr[i];  //把目前的最小值赋值给min
    			}
    		}
    		System.out.println("min =" + min);
    		
    		// 总和,平均数
    		int res = 0;
    		for(int i = 0; i < arr.length; i++) {
    			res += arr[i];
    		}
    		System.out.println("总和:" + res);
    		System.out.println("平均数:" + (res / arr.length));
    		
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    2. 数组的复制、反转

    代码如下:

    public class Test1 {
    	public static void main (String[] args) {
    	
    		//复制
    		int[] arr = new int[] {4,2,7,1,3,5};
    		int[] arr_copy = new int[arr.length];
    		
    		for(int i =0; i < arr.length; i++) {
    			arr_copy[i] = arr[i];
    		}
    		
    		// 反转
    		// 考虑声明一个数组temp,数组temp的长度与arr的长度一致,倒着循环arr,正着给temp的元素赋值
    		int[] temp =new int[arr.length];
    		int k = 0;
    		for(int i = arr.length - 1; i >= 0; i--) {
    			temp[k] = arr[i];
    			k++;
    		}
    		arr = temp;
    		System.out.print("反转后的arr:");
    		for(int i =0; i< arr.length; i++) {
    			System.out.print(arr[i] + " ");
    		}
    		
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    3. 数组元素的排序

    3.1. 排序方式

    • 插入排序
      直接插入排序、折半插入排序、Shell排序
    • 交换排序
      冒泡排序、快速排序(或分区交换排序)
    • 选择排序
      简单选择排序、堆排序
    • 归并排序
    • 基数排序

    3.1.1. 冒泡排序

    排序思想
    相邻两元素进行比较,如有需要则进行交换,每完成一次循环就将最大元素排在最后(如从小到大排序),下一次循环是将其它的数进行类似操作。

    练习题
        对数组{4,7,3,1}从小到大排序,使用冒泡排序方式。

    答案

    public class Test1 {
    	public static void main (String[] args) {
    	
    		//冒泡排序
    		//假设4,7,3,1 从小到大排序
    		//4,3,1,7 第一轮得到一个最大的数字,放在倒数第一位
    		//3,1,4,7 第二轮得到除最后一个数字之外的最大数字,放在倒数第二位
    		//1,3,4,7 第三轮得到除最后两个数字之外的最大数字,放在倒数第三位
    		int[] arr = new int[]{4,7,3,1};
    		int temp = 0;
    		for(int i = 0; i< arr.length-1; i++) { //外层循环是循环轮次,轮次循环的次数是数组长度-1
    			for(int j = 0; j < arr.length-1-i; j++) { //每一轮次的数字对比排序,每轮次的循环依次3,2,1,(轮次长度-1-i)
    				if(arr[j] > arr[j+1]) {    //如果是<号,则从大到小排序
    					temp = arr[j];
    					arr[j] = arr[j+1];
    					arr[j+1] = temp;
    				}
    			}
    		}
    		
    		for(int i = 0; i < arr.length; i++) {
    			System.out.println(arr[i]);
    		}
    		
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
  • 相关阅读:
    【教3妹学编程】消息队列的使用场景有哪些?
    测绘项目数据在线管理浏览平台:四维轻云实现倾斜摄影模型轻量化处理
    【Android】【实践】
    Flutter StreamBuilder 实现局部刷新 Widget
    Opencv(图像处理)-基于Python-绘图功能
    C++中类的运算符重载教程(一),内附完整代码与解析
    Vue.js 通过举一反三建立企业级组件库
    【网络通信 -- WebRTC】WebRTC 源码分析 -- PacingController 相关知识点补充
    二十八、java版 SpringCloud分布式微服务云架构之Java 包(package)
    UDP聊天室
  • 原文地址:https://blog.csdn.net/weixin_44883789/article/details/133715385