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

冒泡排序

时间:2017-08-30 21:40:06      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:div   numbers   nbsp   string   line   alt   str   ble   tle   

       冒泡排序:冒泡排序是一种简单的排序,它是将相邻的两个数依次比较,将小数放在前面,大数放在后面。然后重复地走访过要排序的数列,直至没有需要交换的数为止,即排序完成。"冒泡"这个词也就是因为越小的元素会经由交换慢慢“浮”到数列的顶端,像气泡一样慢慢冒出来一样。

冒泡排序的示范如下:

技术分享           技术分享

                                   1.第一个数与相邻数比较大小交换位置                                                                           2.交换位置后与相邻的数再次比较大小后交换位置

      技术分享      技术分享

                                   3.第一趟排序完成                                                                                                           4.排序完成

 

冒泡排序的Java算法如下:(数组从小到大排列)

 1 /**
 2  * 冒泡排序
 3  * @author turtle
 4  * 工作思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。
 5  * 即在第一趟时,首先比较第1个和第2个数,将小数放前,大数放后。
 6  * 然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后,完成排序。
 7  */
 8 public class bubble {
 9     public static void bubbleSort(int[] numbers) {
10         int size = numbers.length;
11         for (int i = 0; i < size - 1; i++) { //冒泡趟数n-1次
12             for (int j = 0; j < size - 1 - i; j++) {
13                 if (numbers[j] > numbers[j + 1]) {
14                     int temp = numbers[j];
15                     numbers[j] = numbers[j + 1];
16                     numbers[j + 1] = temp;
17                 }
18             }
19         }
20     }
21 }

 

冒泡排序是一种用时间换空间的排序算法,最坏的情况是把顺序的排序变成逆序(O(n2)),或者把逆序的排序变成顺序(O(n)),每一次比较都需要进行交换运算。

运行测试:

1 public class run {
2     public static void main(String[] args) {
3         int[] bubble_num = { 46, 37, 34, 33, 28, 16, 14, 5, 5, 1 };
4         bubble.bubbleSort(bubble_num);
5         System.out.println(Arrays.toString(bubble_num));
6     }
7 }

测试结果:

[1, 5, 5, 14, 16, 28, 33, 34, 37, 46]

冒泡排序

标签:div   numbers   nbsp   string   line   alt   str   ble   tle   

原文地址:http://www.cnblogs.com/Turtledove/p/7455198.html

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