博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
排序算法总结
阅读量:4363 次
发布时间:2019-06-07

本文共 1960 字,大约阅读时间需要 6 分钟。

  1.冒泡排序

  相邻两个交换

  时间复杂度O(n²)

  稳定

  2.插入排序

    O(n²)

  稳定

  3.选择排序

  O(n²)

  不稳定

  4.快排

  1)从待排序的n个记录中任意选取一个记录(通常选取第一个记录)为分区标准;

  2)把所有小于该排序列的记录移动到左边,把所有大于该排序码的记录移动到右边,中间放所选记录,称之为第一趟排序;

  3)然后对前后两个子序列分别重复上述过程,直到所有记录都排好序。

  稳定性:不稳定

  平均时间复杂度:O(nlogn)

  

  5.归并

  1)先通过二分将其分到最小,再合并有序数组

  O(nlogn) 稳定

void Merge(int *a, int *l, int*r, int m, int n){    int i = 0, j = 0,k=0;    while (i < m&&j < n)    {        if (l[i] < r[j]) a[k++] = l[i++];        else        {            a[k++] = r[j++];        }    }    while (i < m) a[k++] = l[i++];    while (j < n)a[k++] = r[j++];}void MergeSort(int *a, int n){    int mid, i, *l, *r;    if (n < 2) return;    mid = n / 2;    l = new int[mid];    r = new int[n - mid];    for (i = 0; i < mid; i++) l[i] = a[i];    for (i = mid; i < n; i++) r[i - mid] = a[i];    MergeSort(l, mid);    MergeSort(r, n - mid);    Merge(a, l, r, mid, n - mid);    delete[] r;    delete[] l;}

   

  6.堆排序

  时间复杂度O(nlogn)

  不稳定

  

void buildminHeap(vector
&a,int i)//建堆{ int temp = a[i];//挖坑 for (; i != 0;) { if (temp < a[(i - 1) / 2]) { a[i] = a[(i - 1) / 2];//填坑 i = (i - 1) / 2; } else break; } a[i] = temp;}void minHeap(vector
a, vector
&res){ for (int i = 0; i < a.size(); i++) { res[i] = a[i]; buildminHeap(res, i); }}vector
removeminHeap(vector
a){ int n = a.size(); vector
res; res.resize(a.size(), 0); for (int i = 0; i
a.size() && k < a.size())//没有右子树 { int temp = a[j]; a[j] = a[k]; a[k] = temp; } else if (k < a.size() && (k+1)< a.size())//左右子树存在 { int t = a[k] < a[k+1] ? (k) : (k+1); //取小的 int temp = a[t]; a[t] = a[j]; a[j] = temp; j = t; } else break; } } return res;}

 

 

 

 

  7.桶排序

  O(n+C) 稳定

转载于:https://www.cnblogs.com/wshr007/p/11492531.html

你可能感兴趣的文章
C#中的stathread标签【待填的坑】
查看>>
CAD教程----圆的优化命令viewres
查看>>
text输入框改变事件
查看>>
求问,我想android开机不启动自带的界面,启动自己做的应用程序,该怎么做?...
查看>>
【2019/4/15】周进度报告
查看>>
Java Web应用服务器Resin 国内下载
查看>>
【皇甫】☀七个小矮人和一个小博
查看>>
android 省市区三级联动
查看>>
推荐一个好用的免费简历word模板
查看>>
MySQL中的查询子句
查看>>
『重构--改善既有代码的设计』读书笔记----代码坏味道【4】
查看>>
Java开发者值得关注的7款新工具
查看>>
Spring Boot + Jersey
查看>>
Web前端学习的路径分享,前端学习方法及途径
查看>>
贪吃蛇小游戏
查看>>
USE PDFCREATE TO CREATE A PDF FILE
查看>>
使用nodejs开发前后端分离式接口+数据库访问
查看>>
关于Spring MVC写的不错的几篇博客
查看>>
第八章 watch监听 84 watch-监视路由地址的改变
查看>>
IDEA tomcat乱码
查看>>