前言
冒泡法详解
数组排序(冒泡法)
排序是指将多个数据,按指定的顺序进行排列的过程。
冒泡排序法:通过比较两个相邻的数的大小(如果前面的数大于后面的数就进行交换 / 后面的数大于前面的数就进行交换 ),来进行一个数组的排序,使整个数组中的数据按 从小到大/从大到小 的顺序进行排序。
案例:
将五个无序的数:24,69,80,57,13 使用冒泡排序法将其排成一个从小到大的有序数列。
运行目标:
数组[24,69,80,57,13]
第一轮循环:目标是把最大的数放到数组最后位置
第1次比较 [24,69,80,57,13]
第2次比较 [24,69,80,57,13]
第3次比较 [24,69,57,80,13]
第4次比较 [24,69,57,13,80]
第二轮循环:目标是把第二大的数放到数组倒数第二位置
第1次比较 [24,69,57,13,80]
第2次比较 [24,57,69,13,80]
第3次比较 [24,57,13,69,80]
第三轮循环:目标是把第三大的数放到数组倒数第三位置
第1次比较 [24,57,13,69,80]
第2次比较 [24,13,57,69,80]
第四轮循环:目标是把第三大的数放到数组倒数第四位置
第1次比较 [13,24,57,69,80]
代码:
publicclassBubbleSort { publicstaticvoidmain(String[] args) { int[] arr= {24 , 69 , 80 , 57 , 13}; inttemp; //用于辅助变量交换// 先死后活 => 4就是 arr.length - 1for(inti=0; i<arr.length-1; i++) {// 外层循环四次for(intj=0; j<arr.length-1-i; j++) { // 四次比较 -> 三次 -> 二次 -> 一次// 如果后面的数大于前面的数就进行交换if(arr[j] >arr[j+1]) { temp=arr[j+1]; arr[j+1] =arr[j]; arr[j] =temp; } } System.out.println("\n ===第"+ (i+1) +"轮"); for(intj=0; j<arr.length ; j++) { System.out.print(arr[j] +"\t"); } } } }
分析:
1)一共有五个元素,进行了四轮循环
2)每一轮的循环都可以确定一个数的位置,比如第一轮循环确定了最大的一个数,第二轮循环确定了第二大的数……
3)当进行比较时,只要前面的数大于后面的数就进行交换
4)每轮的比较次数在减少,4 => 3 => 2 => 1,因为每轮都会确定一个数的位置