啊哈算法系列第一章 排序

"桶"排序

简单"桶"排序,n个数需要n+1个变量申明,若n的较大造成所占空间过大,变量存储的值是该数所出现过的次数.
时间复杂度为O(M+N)

冒泡排序

n个数进行n-1趟操作,每趟比较直到最后一个未归位的数.
时间复杂度为O(N^2).

void  bubbleSort(int data[], int n) {
    for (int i = 1; i <= n-1; ++i) {
    for(int j = 1; j <= n-i; j++) {
        if (data[j] < data[j+1]) {  
          int temp = data[j];
          data[j] = data[j+1];
          data[j+1] = temp;
        }
    }
   }
}

快速排序

设定基数,进行跳跃式互换位置.两端同时向中间比较,右边找比基数小的,左边找比基数大的,然后进行互换,直至相遇将基数位置放中;然后重复递归原基数的左边和右边.
平均时间复杂度为O(NlogN)

void quickSort(int data[], int left, int right) {

    if (left > right)
    {
        return;
    }

    int i = left;
    int j = right;
    int base = data[left];

    while(i != j) {

        while(a[j] > base && i > j ) {
            j--;
        }

        while(a[i] < base && i > j) {
            i++;
        }

        if (i < j)
        {
            int temp = a[i];
            a[i] = a[j];
            a[j] = temp;
        }

    }

      // 将基数归位于中间位置
    a[left] = a[i];
    a[i] = base; 
    
    quickSort(left, i - 1);  // 递归左边
    quickSort(i + 1, right); // 递归右边

}

小结

在"桶"排序, 冒泡排序, 快速排序以上这三种中效率最高的是快速排序.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,222评论 0 52
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 3,746评论 0 15
  • 概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的...
    Luc_阅读 2,308评论 0 35
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 1,286评论 0 2
  • 乐游天下旅行团 现在经济环境确实不太好,可是经济再低迷,老百姓还是要消费,还是要娱乐,尤其是旅游这件事,不光能饱览...
    我不是博客阅读 311评论 0 0