#Java经典算法之冒泡排序——Bubble Sort
冒泡排序是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。—— [ 百度百科 ]
什么是冒泡排序?
冒泡排序(Bubble Sort)是一种简单的排序算法。由于在排序过程中越大的元素会经由置换慢慢“浮”到数列的顶端(升序时),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
###实例如下:
若取元素{3,1,5,4,2}通过冒泡排序进行升序排列。
首轮排序 | 参与排序的数列 | 置换 | 排序后的序列 |
---|---|---|---|
第一轮比较 | 3,1,5,4,2 | 3与1进行比较,置换3,1 | 1,3,5,4,2 |
第二轮比较 | 1,3,5,4,2 | 3与5进行比较,无置换 | 1,3,5,4,2 |
第三轮比较 | 1,3,5,4,2 | 5与4进行比较,置换5,4 | 1,3,4,5,2 |
第四轮比较 | 1,3,4,5,2 | 5与2进行比较,置换5,2 | 1,3,4,2,5 |
首轮排序结束,数组序列为:1,3,4,2,5;末尾元素5已是最大数,无需参与下轮排序。
第二轮排序 | 参与排序的数列 | 置换 | 排序后的序列 |
---|---|---|---|
第一轮比较 | 1,3,4,2 | 1与3进行比较,无置换 | 1,3,4,2 |
第二轮比较 | 1,3,4,2 | 3与4进行比较,无置换 | 1,3,4,2 |
第三轮比较 | 1,3,4,2 | 4与2进行比较,置换4,2 | 1,3,2,4 |
首轮排序结束,数组序列为:1,3,2,4,5;元素4无需参与下轮排序。
第三轮排序 | 参与排序的数列 | 置换 | 排序后的序列 |
---|---|---|---|
第一轮比较 | 1,3,2 | 1与3进行比较,无置换 | 1,3,2 |
第二轮比较 | 1,3,2 | 3与2进行比较,置换3,2 | 1,2,3 |
第三轮排序结束,数组序列为:1,2,3,4,5;元素3无需参与下轮排序。
第四轮排序 | 参与排序的数列 | 置换 | 排序后的序列 |
---|---|---|---|
第一轮比较 | 1,2 | 1与2进行比较,无置换 | 1,2 |
第四轮排序结束,数组序列为:1,2,3,4,5;冒泡排序结束。
##Java冒泡排序实现
public static void main(String[] args) {
//定义数组arraySort
int[] arraySort=new int[]{2,6,3,5,7,8,1,9,10,4};
int min=0;
//原始数组遍历
System.out.println("排序前数组:");
for (int i = 0; i < arraySort.length; i++) {
System.out.print(arraySort[i]+" ");
}
System.out.println();
//进行冒泡排序,无须进行最后一次外循环,并且每排序一轮,减少一次内部循环
for (int i = 0; i < arraySort.length-1; i++) {
for (int j = 0; j < arraySort.length-1-i; j++) {
if(arraySort[j]>arraySort[j+1]){
min=arraySort[j];
arraySort[j]=arraySort[j+1];
arraySort[j+1]=min;
}
}
}
//排序后数组遍历
System.out.println("排序后数组:");
for (int i = 0; i < arraySort.length; i++) {
System.out.print(arraySort[i]+" ");
}
System.out.println();
}