冒泡排序
Java源码
package com.hkd.array; import java.util.Arrays; /* 冒泡排序:冒泡排序代码,两层循环,外层冒泡轮数,内层依次比较 1.比较数组中两个相邻的元素,并按规定的大小序列排序 2.每次比较都会产生一个最大或最小的数字 3.下一轮则可以少一次排序 4.依次循环,直到结束 */ public class ArrayDemo04 { public static void main(String[] args) { int[] arrays={22,1,3,55,41,12,32,17}; int[] result=sort(arrays); //通过Arrays类的toString方法打印数组,效果同for循环打印数组 System.out.println(Arrays.toString(result)); } public static int[] sort(int[] arrays){ //临时变量 int temp=0; //通过flag标识位减少没有意义的比较 /* 适用于数组提前完成了排序的情况下(原数组顺序不太混乱才会提前完成) 由于数字没有进行交换位置,说明已经排序完毕 但外层循环还没有结束,继续运行下去也是没有意义的比较 所以通过flag==false提前结束外层循环 */ boolean flag=false; //外层循环的是需要循环比较的次数,判断我们这个要走多少次 for(int i=0;i< arrays.length-1;i++){ //内层循环比较每次外循环中相邻两数大小互换位置 for(int j=0;j< arrays.length-1-i;j++){ if(arrays[j]>arrays[j+1]){ temp=arrays[j]; arrays[j]=arrays[j+1]; arrays[j+1]=temp; flag=true; } } if (flag==false){ break; } } return arrays; } }
图解