主题:冒泡排序(在java中有用于排序的Arrays.sort(要排序的数组),嫌麻烦可以直接用这个)
给定一个数组,让数组升序(降序)排列。每次尝试找到当前待排序区间中最小(或最大)的元素,放到数组最前面(或最后面)。
问题:给定一个数组,让数组升序排序
思路:除len-1以外的1的个数i的取值范围为[0,len-1),可作为外层循环。次数j的取值范围为[0,len-1-i)作为内层循环。在冒泡排序中还有可能出现顺序已经排好但是循环还在继续的问题。可以引入一个布尔数,若此次循环没有数字交换则不进入if条件语句,break跳出。
代码:
public static void bubbleSort(int[] array){
//确定趟数
for(int i=0;i<array.length-1;i++){
boolean flg=false;
//确定每一趟的次数,若j<=array.length-1-i,则为不稳定序列
for(int j=0;j<array.length-1-i;j++){
if(array[j]>array[j+1]){
int tmp = array[j];
array[j] = array[j+1];
array[j+1] = tmp;
flg=true;
}
}
if(flg==false){
//没有交换
break;
}
}
}
public static void main(String[] args) {
int[] array={32,43,10,3,9,5};
System.out.println(Arrays.toString(array));
bubbleSort(array);
System.out.println(Arrays.toString(array));
}