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

冒泡排序

时间:2016-08-14 19:07:20      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:

相信博客里有不少这类似的基础算法了,而且有不少大神的作品,所以这篇博文多半也没有什么参考价值了,只是用来把所掌握的知识分类整理一下,希望能让看到这篇博文的小鸟们有所收获(当然,包括自己……)

冒泡排序一般是把小的向前排(或者大的向后排,一个意思,不同说法)。越到后面的值越大,类似鱼吐的泡泡,泡泡会越来越大一样。bubble就是泡泡的意思,很形象很有意思的命名。

 

PS.这演示图不知道是哪位高手做的,很形象,所以就盗图过来了,感谢这位高手的分享。

技术分享

冒泡排序是一样比较经典的排序算法,时间复杂度为:O(n^2)     空间复杂度为:O(1)。    最坏的情况为:对正序的进行反序排序,或者对反序的进行正序排序。

所以冒泡排序是一种以时间复杂度换取空间复杂的一种算法,相对“快排、选择排序、堆排与希尔排序”稳定。

什么叫时间复杂呢?是指执行算法所需要的计算工作量。

 

因为时间复杂度的关系,所以在数据量小的时候可以采用,而当数据大时,应该采用别的算法。

 

冒泡排序的思路如下:

1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。

2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该为最大的数。

3.针对所有的元素重复以上的步骤,除了最后一个。

4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较 。

以下是使用C++语言对冒泡排序算法的实现。

 1 #include <iostream>
 2 
 3 //void bubbleSort(int (&arr)[10],int size);
 4 void bubbleSort(int arr[], int size);
 5 int main()
 6 {
 7     int arr[10] = { 2, 3, 1, 4, 5, 6, 7, 9, 8, 0 };
 8     bubbleSort(arr,sizeof arr/sizeof(int));
 9     for (int i = 0; i < 10; i++)
10         std::cout << arr[i] << " ";
11     std::cout << std::endl;
12     system("pause");
13     return 0;
14 }
15 
16 //void bubbleSort(int (&arr)[10], int size)
17 void bubbleSort(int arr[], int size)
18 {
19     int temp;
20     for (int i = 0; i < size; i++)
21         for (int j = 0; j < size - 1; j++)
22         {
23             if (arr[j] > arr[j + 1])
24             {
25                 temp = arr[j];
26                 arr[j] = arr[j + 1];
27                 arr[1 + j] = temp;
28             }
29         }
30 }

 

冒泡排序

标签:

原文地址:http://www.cnblogs.com/XavierJian/p/5770619.html

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