• 【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
  • 相关阅读:
    Linux命令-awk
    C++-继承-多继承-类型转换-内存结构分析-汇编分析-逆向分析(二)
    css3 文本超出容器后显示...以及超出几行后显示...
    ES6 导入导出
    [Power Query] 汇总表
    四元数和旋转矩阵两种方式对旋转向量进行更新结果对比
    springboot+vue+elementui社区公益志愿者服务网站java
    Qt事件机制
    计算机毕业设计:基于HTML学校后台用户登录界面模板源码
    基于C语言的词法分析程序的设计与实现
  • 原文地址:https://blog.csdn.net/weixin_44883789/article/details/133715385