1 / 8
文档名称:

最常用排序算法总结.doc

格式:doc   大小:28KB   页数:8页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

最常用排序算法总结.doc

上传人:xiarencrh 2021/1/12 文件大小:28 KB

下载得到文件列表

最常用排序算法总结.doc

相关文档

文档介绍

文档介绍:实际应用中最常用的排序是快速排序和堆排序。所谓堆排序,就是将最小的一个值放到堆栈的顶部,这样就可以使最后出来的数完成排序。快速排序是不稳定的,堆排序是稳定的。所谓稳定,就是当两个值相等时,排序后两个值的顺序和排序前相同。以上两种排序使用的范围和情况是不同的,一般对于自然生成序列排序使用快速排序效率比较高,而对于已经有一定顺序的序列,使用堆排序比较合适,而且稳定的。
这里主要总结常用的5种排序,分别是快速排序,冒泡排序(也叫交换排序),选择排序,shell排序,插入排序。
下边分别介绍:
1快速排序,就是从一个序列中随意取一个数,然后对剩下的数进行分类,小的放到左边,大的放到右边。如此进行下去知道最后。N(n-1)/(n).
2冒泡排序,就是从第一个数开始和后一个数比较,然后依情况交换,然后再用第二个和第三个比较交换,如此反复,直到最后一个。一直进行n轮就可以完成排序。
3选择排序,就是将一个序列中的最小的放到第一个,然后再将剩下的数据用相同的方式分别放到后一位。它的空间复杂度是O(1).
4shell排序,就是将有一定间隔的数进行排序,并且间隔变小,也就是开始是n/2,然后继续变小,一般都是以一半为标准,直到最后间隔只有1,也就完成了排序。需要的空间复杂度是O(1).
5插入排序,就比如平时玩的***排,一般整理排的时候需要将排排序,当你拿到一张新排的时候,就要比较左边和右边,只有在左右中间的那个值的时候才说明排序成功。它需要的空间复杂度也是O(1).
Ps:空间复杂度就是需要另外占用的空间。
以上排序中,只有快速排序是O(n),其他都是O(1),因为只有快速排序需要另外再起存储空间,而其他都是在原来空间中增加一个空间就可以。
1,快速排序
这个有点难解释,感觉上就是纽来纽去,先从首记录开始也行,从未记录开始也行,以后补上.
Tony Hoare在1962年首次提出了快速排序算法。对快速排序方法的研究表明,至今快速排序算法仍然是流传久远的最实用的排序算法。只在输入数据项有更详细的信息时,其它排序算法才可能胜过快速排序算法。快速排序算法是利用分治技术的典型例子,随机分治策略是设计组合优化与计算几何一类问题有效算法的基础。分治策略分为三步:
  (1)将问题分成若干大小基本相等的子问题;
  (2)独立地解决这些子问题;
  (3)将子问题归并成原问题的解。
  快速排序的基本思路是:首先我们选择一个中间值middle(程序中我们可使用数组中间值),把比中间值小的放在其左边,比中间值大的放在其右边。由于这个排序算法较复杂,我们先给出其进行一次排序的程序框架(从各类数据结构教材中可得):
void QuickSort(int *pData, int left, int right)
{
  int i, j;
  int middle, iTemp;
  i = left;
  j = right;
  middle = pData[(left + right) / 2]; //求中间值
  do
  {
   while ((pData[i] < middle) && (i < right)) //从左扫描大