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

【数据结构】冒泡排序

时间:2016-09-21 14:29:56      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:


冒泡排序,有时候又叫做下沉排序,是一种很简单的排序算法,它通过一系列重复的操作来让一个序列变得有序:
比较相邻的2项,如果他们不符合排序的顺序,则交换他们的位置,重复这个操作,直到没有元素需要交换为止,这个时候也就意味着序列已经有序了。

虽然冒泡排序很简单,但是它太慢了,即便是相对插入排序来说。所以于我们一般不会选择它去解决实际的编程问题。

当序列基本有序,只有几处地方无序,且无需元素间距很近时,我们才会考虑使用它。

 

冒泡排序的要点

  • 冒泡排序需要 二重循环,最外层控制 趟数 , 每一趟 会在当前比较序列选出一个最大的数沉底。最内层控制在当前排序序列中找出最大数。
  • n个元素排序,最外层循环趟数是 n-1 ,而不是 n。想想只有一个元素的序列,需要比较几趟呢?显然是 1-1=0趟,因为无需比较。
  • 时间复杂度: O(n2)
  • 稳定性:      稳定

 

 

技术分享

 

技术分享

 

 

如此重复...

 

 

 

 

void bubble_sort(int*arr,int len)
{
    int temp;
    for(int i=0;i<len-1;++i)        //最外层循环控制 "趟" 数
    {
        for(int k=0;k<len-1-i;++k)  //缩短比较序列,循环比较,需要时。交换
            if(arr[k]<arr[k+1])     //升序排序
            {
                temp = arr[k];
                arr[k] = arr[k+1];
                arr[k+1] = temp;
            }
    }
}

 

【数据结构】冒泡排序

标签:

原文地址:http://www.cnblogs.com/lulipro/p/5559804.html

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