定义
冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。(来自百度)
原理
- 比较相邻的元素。如果前一个元素比后一个元素大,就交换这两个元素的位置。
- 对每一对相邻元素做同样的工作,从开始第一对元素到结尾的最后一对元素。最终最后位置的元素就是最大值。
例子
要排序的数组为:{4,5,7,6,3,1,2} 初始时:
第一次冒泡结果为:
解释: 先比较4和5: 4比5小,不进行交换 接着比较5和7: 5比7小,不进行交换 接着比较7和6: 7比6大,进行交换,此时数组为:
接着比较7和3: 7比3大,进行交换,此时数组为:
接着比较7和1: 7比1大,进行交换,此时数组为:
接着比较7和2: 7比2大,进行交换,此时数组为:
同理:第二次冒泡结果为:
第三次冒泡结果为:
第四次冒泡结果为:
第五次冒泡结果为: 第六次冒泡结果为: 第七次冒泡结果为:
代码实现
package sort;
public class MaopaoOrder {
public static void sort(int[] arr) {
for(int i = arr.length-1; i > 0; i--) {
for (int j = 0; j < i; j++) {
if(arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
//下面为测试代码
public static void main(String[] args) {
int[] arr= {4,5,7,6,3,1,2};
sort(arr);
for (int i : arr) {
System.out.print(i);
}
}
}
|