冒泡排序是最出名的排序算法之一,总共有八大排序。
冒泡排序代码并不复杂,共两层循环,外层冒泡轮数,里层依次比较。
算法步骤:
1. 比较数组中两个相邻元素,如果第一个元素比第二个元素大,交换位置
2. 每一次比较,都会产生一个最大,或者最小的数字;
3. 下一轮可以少一次排序
4. 依次循环,直到结束
代码演示:
public static void main(String[] args) {int[] a = {1,5,6,98,52,66,91,2};int[] sort = sort(a);System.out.println(Arrays.toString(sort)); //[98, 91, 66, 52, 6, 5, 2, 1]}//冒泡排序public static int[] sort(int[] array){//临时变量int c = 0;//外层循环,判断我们循环要走多少次for (int i = 0; i < array.length-1; i++) { //-1是为了不让溢出//内层循环,比较两个数for (int j = 0; j < array.length-1-i; j++) {if (array[j+1]>array[j]){c = array[j];array[j] = array[j+1];array[j+1] = c;}}}return array;}
当然,我们还能进一步优化一下:
public static int[] sort(int[] array){//临时变量int c = 0;//外层循环,判断我们循环要走多少次for (int i = 0; i < array.length-1; i++) { //-1是为了不让溢出boolean flag = false; //通过flag标志位减少无意义比较//内层循环,比较两个数for (int j = 0; j < array.length-1-i; j++) {if (array[j+1]>array[j]){c = array[j];array[j] = array[j+1];array[j+1] = c;flag = true;}}if (flag == false){break;}}return array;}