最近研究排序序列,稍微总结一下,以后继续补充:

快速排序

排序想思:通过一趟排序将要排序的数据分割成独立的两分部,其中一分部的有所数据都比另外一分部的有所数据都要小,然后再按此法方对这两分部数据别分停止快速排序,全体排序进程可以递归停止,以此到达全体数据成变有序序列。其中,个人认为如何将数据按key排放这一步调最为主要,理解了这里,全体法算该应就明确了。

排序实例:49 38 65 97 76 13 27

停止第一次交换后:27 38 65 97 76 13 49           ( 按照法算的第三步从前面开始找,此时:J=6)
停止第二次交换后:27 38 49 97 76 13 65           ( 按照法算的第四步从面前开始找> key的值,65>49,两者交换,此时:I=2 )
停止第三次交换后:27 38 13 97 76 49 65           ( 按照法算的第五步将又一次执行法算的第三步从后开始找
停止第四次交换后:27 38 13 49 76 97 65           ( 按照法算的第四步从面前开始找大于 key的值,97>49,两者交换,此时:I=3,J=5 )
此时再执行第三和四步的时候就发明I=J=4,从而结束一趟快速排序,那么经过一趟快速排序后之的结果是:27 38 13 49 76 97 65,即有所大于 key49的数全体在49的前面,有所小于key(49)的数全体在key(49)的面前。

否是定稳:否。

时间复杂度:均平时间复杂度Ο(n log n) ,最坏为O(n^2)。

void swap(int *pLeft,int *pRight)
{int temp;temp = *pLeft;*pLeft= *pRight;*pRight = temp;
}void my_quick_sort(int a[], int begin, int end)
{int compare=a[begin], left =begin,right = end;if(left > right)return;while(left < right){while ((left < right) && (a[right] >= compare))right--;swap(&a[left], &a[right]);while ((left < right) && (a[left] <= compare))left++;swap(&a[left], &a[right]);}my_quick_sort(a, begin, left-1);my_quick_sort(a, left+1, end);
}
每日一道理
书籍好比一架梯子,它能引领人们登上文化的殿堂;书籍如同一把钥匙,它将帮助我们开启心灵的智慧之窗;书籍犹如一条小船,它会载着我们驶向知识的海洋。

并归排序

排序想思:并归(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为多少个子序列,每个子序列是有序的。然后再把有序子序列合并为团体有序序列。

否是定稳:定稳。

时间复杂度:O(n*logn)。

void mergearray(int a[], int first, int mid, int last, int temp[])
{int i = first, j = mid + 1;int m = mid,   n = last;int k = 0;while (i <= m && j <= n){if (a[i] <= a[j])temp[k++] = a[i++];elsetemp[k++] = a[j++];}while (i <= m)temp[k++] = a[i++];while (j <= n)temp[k++] = a[j++];for (i = 0; i < k; i++)a[first + i] = temp[i];
}
void mergesort(int a[], int first, int last, int temp[])
{if (first < last){int mid = (first + last) / 2;mergesort(a, first, mid, temp);    //左边有序mergesort(a, mid + 1, last, temp); //右侧有序mergearray(a, first, mid, last, temp); //再将二个有序数列合并}
}
bool MergeSort(int a[], int n)
{int *p = new int[n];if (p == NULL)return false;mergesort(a, 0, n - 1, p);delete[] p;return true;
}

注:文中分部代码考参了其他博文。

文章结束给大家分享下程序员的一些笑话语录: 问:你觉得让你女朋友(或者任何一个女的)从你和李彦宏之间选一个,你觉得她会选谁?  
  答:因为李艳红这种败类,所以我没女友!

排序序列排序算法总结(二)——快速排序、归并排序相关推荐

  1. 七大排序的个人总结(二) 归并排序(Merge

    七大排序的个人总结(二) 归并排序(Merge  归并排序(Merge Sort): 归并排序是一个相当"稳定"的算法对于其它排序算法,比如希尔排序,快速排序和堆排序而言,这些算法 ...

  2. python实现冒泡排序算法的非递归版本_python排序算法速度比较:快速排序,归并排序,冒泡排序...

    前言 原理就不在这里说了,好多大神肯定比我这个初学者讲的好很多,推荐去B站看视频讲解,跟着手敲代码 为什么选这三个排序呢? 首先快排是必须掌握的 看看快排在最坏的情况下(O(n²)),且不使用辅助空间 ...

  3. C语言实现希尔排序shell sort算法之二(附完整源码)

    希尔排序shell sort算法 希尔排序shell sort算法的完整源码(定义,实现,main函数测试) 希尔排序shell sort算法的完整源码(定义,实现,main函数测试) #includ ...

  4. 输出dag的所有拓扑排序序列_算法学习笔记(53): 拓扑排序

    拓扑排序是对DAG(有向无环图)上的节点进行排序,使得对于每一条有向边 , 都在 之前出现.简单地说,是在不破坏节点 先后顺序的前提下,把DAG拉成一条链.如果以游戏中的科技树(虽然名字带树,其实常常 ...

  5. C++shell sort希尔排序的实现算法之二(附完整源码)

    C++shell sort希尔的实现算法 C++shell sort希尔的实现算法完整源码(定义,实现,main函数测试) C++shell sort希尔的实现算法完整源码(定义,实现,main函数测 ...

  6. 算法整理(二)---快速排序的两种实现方式:双边扫描和单边扫描

    首先简单谈下快速排序的特点,时间复杂度O(nLog n),最差时间复杂度O(n^2),平均时间O(nLog n).因为用到了函数栈,空间复杂度为O(lg n),最差为O(n).是一种不稳定的排序方法. ...

  7. 9个元素换6次达到排序序列_原创系列 |冒泡排序提升为快速排序,都发生了什么?...

    「Python与算法社区」 第 310 篇原创 " 1 你会学到什么? " 彻底弄明白常用的排序算法的基本思想,算法的时间和空间复杂度,以及如何选择这些排序算法,确定要解决的问题的 ...

  8. java通过比较大小排序_排序算法的比较与java实现

    冒泡排序 基本思想: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 针对所有的元素重复以上 ...

  9. Python排序算法(二) 快速排序、希尔排序、归并排序

    这篇文章有的排序算法是:快速排序.希尔排序.归并排序. 快速排序 ''' 快速排序 '''def quick_sort(aList, first, last):if first >= last: ...

最新文章

  1. 数据结构与算法(8-1)顺序表查找及优化
  2. C - 食物链 POJ - 1182
  3. 首批新冠肺炎人体疫苗来了!全球第一mRNA药物研发公司研制,已开启安全性临床试验...
  4. 学习Unix/Linux编程要学些什么
  5. LINK : fatal error LNK1168: cannot open Debug/Test.exe for writing
  6. 使用C#读写结构化的二进制文件
  7. FFmpeg - C++中使用ffmpeg库
  8. java反序列化后不相等_Jackson:使用不同的属性名称序列化/反序列化 - java
  9. Kanas.net Framework 入门介绍
  10. .net Api 接口调用 增删改查
  11. 程序员的那点事(转自java老师李明志)
  12. 决策树案例:基于python的商品购买能力预测系统
  13. caffe for Windows下的编译错误
  14. Mysql 创建数据库\添加用户\用户授权
  15. 数字滤波器的MATLAB与FPGA实现--Altera/Verilog版的pdf版,杜勇等编著的书。
  16. 做京东运营2年的感悟
  17. 南京大学2020计算机考研分数线,南京大学2020考研复试分数线已公布
  18. 简单画图程序(windows程序设计)
  19. 数字图像处理(冈萨雷斯版)-第二章
  20. java基础-变量定义

热门文章

  1. 过滤CString字符串中各位是数字,大小写字母,符号,汉字
  2. AndroidStudio_在android中使用properties配置文件_进行配置_只能读取配置_不能写入配置_放在assets---Android原生开发工作笔记230
  3. 持续集成部署Jenkins工作笔记0002---认识Jenkins和Hudson
  4. Web前端工作笔记010---IE8兼容_IE8不能使用foreach_indexOf的解决方案
  5. Kafka内核理解:消息的收集/消费机制
  6. Setting the Background Image for a List Control
  7. Java代码怎么取消订阅功能,RxJava2 中多种取消订阅 dispose 的方法梳理( 源码分析 )...
  8. html点击文字展开图片,DIV CSS鼠标经过悬停在图片上时图片上方显示文字
  9. java hdfs导入hbase_使用BulkLoad批量导入数据到HBase中
  10. hp380g5 安装linux7,hp 380G5 安装centos 7