冒泡排序(Bubble Sort),是一种 计算机科学 领域的较简单的 排序算法 。 它重复地走访过要排序的元素列,依次比较两个相邻的 元素 ,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。下面我们通过举例来分析冒泡排序算法
一.分析冒泡排序
将数组[24,69,80,57,17]用冒泡排序的方式从小到大排序
第一轮排序:目的是将最大数放在最后一位
第一次比较:[24,69,80,57,17]将24与69进行比较,位置不变
第二次比较:[24,69,80,57,17]将69与80进行比较,位置不变
第三次比较:[24,69,80,57,17]将80与57进行比较,80大于57,交换位置
第四次比较:[24,69,57,80,17]将80与17进行比较,80大于17,交换位置
第一轮得到的结果为[24,69,57,17,80]
第二轮排序:目的是将第二大数放在倒数第二位
第一次比较:[24,69,57,17,80]将24与69进行比较,位置不变
第二次比较:[24,69,57,17,80]将69与57进行比较,69大于57,交换位置
第三次比较:[24,57,69,17,80]将69与17进行比较,69大于17,交换位置
第二轮得到的结果为[24,57,17,69,80]
第三轮排序:目的是将第三大数放在倒数第三位
第一次比较:[24,57,17,69,80]将24与57进行比较,位置不变
第二次比较:[24,57,17,69,80]]将57与17进行比较,57大于17,交换位置
第三轮得到的结果为[24,17,57,69,80]
第四轮排序:目的是将第三大数放在倒数第三位
第一次比较:[24,17,57,69,80]将24与17进行比较,24大于17,交换位置
第四轮得到的结果为[24,17,57,69,80]
最后的结果为[24,17,57,69,80]
二.总结冒泡排序的特点
一共有5个元素,进行了4轮排序 ,每一轮排序都可以确定一个数的位置,比如第1轮确定了最大数,第2轮确定了第二大数,依此类推。每轮比较在减少4->3->2->1.
三.代码演示
public class BubbleSort{
public static void main(String[] args) {
int temp = 0;
int[] arr = {24,69,80,57,17};
for (int i=0;i<arr.length-1 ;i++ ) {
for (int j = 0;j<arr.length-i-1 ;j++ ) {
if (arr[j]>arr[j+1]) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
System.out.println("\n==第"+(i+1)+"轮==");
for (int j=0;j<arr.length ;j++ ) {
System.out.print(arr[j]+"\t");
}
}
}
}
运行结果: