算法描述:
① 比较相邻的元素。如果前面元素大于后面元素,就交换他们两个。
② 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。第一趟下来,最后的元素会是最大的数。
③ 针对所有的元素重复以上的步骤,除了最后已经选出的元素(有序)。在某一趟的排序中如果没有发生任何数据交换,则可认为已经排好序了。
④ 持续每次对越来越少的元素(无序元素)重复上面的步骤,直到没有任何一对数字需要比较,则序列最终有序。
public class BubbleSort{
//冒泡排序
public static int[] bubbleSort(int[] arr){
for(int i=0; i<arr.length-1; i++){
boolean swapped = false; //用于记录某一趟排序是否发生了数据交换
for(int j=0; j<arr.length-i-1; j++){
if(arr[j] > arr[j+1]){
int temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
swapped = true;
}
}
/* 在某一趟的排序中如果没有发生任何数据交换,则可认为该数组已经排好序了 */
if (!swapped) {
break;
}
}
return arr;
}
public static void main(String[] args){
System.out.println("=====插入排序=====");
int[] array = new int[]{10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
System.out.println("排序之前:");
for(int i = 0; i < array.length; i++){
System.out.print(array[i] + " ");
}
array = bubbleSort(array);
System.out.println("\n");
System.out.println("排序之后:");
for(int i = 0; i < array.length; i++){
System.out.print(array[i] + " ");
}
}
}