码迷,mamicode.com
首页 > 编程语言 > 详细

冒泡排序

时间:2019-01-30 13:03:55      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:步骤   需要   二次   交换两数   最大   java   代码   OLE   冒泡   

冒泡排序的原理:

冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

java代码:
 1     public static void bubbleSort(int[] numbers) {
 2         int temp = 0;
 3         int size = numbers.length;
 4         for (int i = 0; i < size - 1; i++) {
 5             for (int j = 0; j < size - 1 - i; j++) {
 6                 if (numbers[j] > numbers[j + 1]) { // 交换两数位置
 7                     temp = numbers[j];
 8                     numbers[j] = numbers[j + 1];
 9                     numbers[j + 1] = temp;
10                 }
11             }
12         }
13     }

代码还有改进的空间,如果排序到后面都是有序的了,此时无需继续比较了,例如:对于一个有序度比较高的数组{1,2,3,4,6,5},第一次冒泡变成{1,2,3,4,5,6},第二次冒泡没有交换数据,此时数组已经是有序的,无需继续冒泡下去。

java代码:

 1     public static void bubbleSort2(int[] numbers) {
 2         int temp = 0;
 3         int size = numbers.length;
 4         boolean flag = true;
 5         for (int i = 0; i < size - 1 && flag; i++) {
 6             flag = false;
 7             for (int j = 0; j < size - 1 - i; j++) {
 8                 if (numbers[j] > numbers[j + 1]) { // 交换两数位置
 9                     temp = numbers[j];
10                     numbers[j] = numbers[j + 1];
11                     numbers[j + 1] = temp;
12                     flag = true;
13                 }
14             }
15         }
16     }

 

性能分析:

时间复杂度:O(n^2)

空间复杂度:O(1)

原地排序:是

稳定排序:是

 

冒泡排序

标签:步骤   需要   二次   交换两数   最大   java   代码   OLE   冒泡   

原文地址:https://www.cnblogs.com/zhanghaodong/p/10337297.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!