冒泡排序
思路分析:
- 两两交换,把最大的值依次放在最后,实现排序,使用两层循环
- 易错点是两层的循环的条件错误,第一层循环是需要循环的次数,比如长度为5,那么需要4次循环,第二层是需要交换的次数
代码:
public class Bubble { public void Sort(int[] arrays){ int temp = 0; for(int i = 1; i < arrays.length; i++){ //第一层循环,注意参数值和条件 int isChange = 0; for(int j = 0; j < arrays.length - i; j++){ //第二层循环,每次都要从0开始 if(arrays[j] > arrays[j+1]){ temp = arrays[j]; arrays[j] = arrays[j+1]; arrays[j+1] = temp; isChange = 1; } } if(isChange == 0){ //假入某一次循环没有任何交换,那说明已经是排序的数组,直接break break; } } for(int i = 0; i < arrays.length; i++){ System.out.println(arrays[i]); } } public static void main(String[] args) { Bubble sort = new Bubble(); int[] array = {3,2,5,4,7,6}; sort.Sort(array); } }
时间复杂度O(n2),空间复杂度O(1), 稳定排序,当交换的条件是>的时候交换,不是>=,否则就不是稳定数组。
//第一层循环,注意参数值和条件

浙公网安备 33010602011771号