冒泡排序法
通过Java来实现
下面是代码:
package com.zhang.array; import java.util.Arrays; public class ArraayDemo07 { public static void main(String[] args) { int[] a = {1,3,9,5,7,6,2,52,22}; int[] b = sort(a);//调用我们写的排序算法来将其排序 System.out.println(Arrays.toString(b)); } //冒泡排序 //1.0比较数组中两个相邻的元素,如果第一个数大于第二个数则,我们交换他们的位置 //2.0每一次比较,都会产生一个最大,或者最小的数字 //3.0下一轮则可以少一次排序 //4.0依次循环,直到结束 //for循环嵌套,时间复杂度O(n^2) public static int[] sort(int[] array){ int temp = 0; //外层循环,判断我们要走多少此 for (int i = 0; i < array.length-1; i++) {//比如10个数只需要比较9次即可所以要减一 //内层循环,比较判断两个数,如果第一个数比第二个数大,则交换位置 boolean flag = false;//通过flag标志位减少没有意义的比较,即如果一个数组本身就是排好序的就不需要再排 for (int j = 0; j < array.length-1-i; j++) { //因为每一次外层循环都有一个最大的数排到了末尾或者最小排到了最前端,不需要再排故减i if(array[j] > array[j+1]){ temp = array[j]; //如果后一位的值比前一位的大,两者就交换 array[j] = array[j+1];//其实这里可以通过写一个swap函数来实现 array[j+1] = temp; flag = true; } } if(flag == false){ //如果直接就是排好的数组来,只需排一次就能从这里退出 break; } } return array; } }