【算法】冒泡排序

简介

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

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

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

冒泡排序的要点

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

如此重复...

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;
            }
    }
}
原文地址:https://www.cnblogs.com/lulipro/p/5559804.html