内部排序-

  • Post author:
  • Post category:其他



1、直接插入排序

:它的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的,记录数增加1的有序表.

在这里插入图片描述


2、折半插入排序

:它的基本操作是将一个记录插入到已经排好序的有序表中(插入方法为二分插入),从而得到一个新的记录数增加1的有序表.

排序过程图与直接插入排序过程图一样。

虽然折半插入排序减少了关键字的比较次数,但是移动次数没有改变,时间复杂度没有改变。

平均时间复杂度O(n^2) 最坏时间复杂度O(n^2) 空间复杂度O(1)


3、Shell排序(希尔排序又称缩小增量排序)

:先将整个待排序记录序列分割成为若干子序列分别进行插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次插入排序。

在这里插入图片描述


4、冒泡排序

:冒泡排序的基本思想是∶从后往前(或从前往后)两两比较相邻元素的值,结果是将最小的元素交换到待排序列的第一个位置(或将最大的元素交换到待排序列的最后一个位置),关键字最小的元素如气泡一般逐渐往上”漂浮”直至”水面”(或关键字最大的元素如石头一般下沉至水底)。下一趟冒泡时,前一趟确定的最小元素不再参与比较,每趟冒泡的结果是把序列中的最小元素(或最大元素)放到了序列的最终位置……·这样最多做n-1趟冒泡就能把所有元素

在这里插入图片描述


5、快速排序

:通过一趟排序将待排记录分割成独立的俩部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这俩部分记录继续继续进行排序,已到达整个序列有序

为了方便初始关键字(也可以称为轴)一般选取序列第一个元素。

俩个指针一个最左边,一个最右边。最左边的往右移,遇到比对称轴大的就停下来与另外一个指针指向的地方交换,最右边的往左移,遇到比对称轴小的就停下来另外一个指针指向的地方交换。

在这里插入图片描述


6、简单选择排序

:根据上面选择排序的思想,可以很直观地得出简单选择排序算法的思想;假设排序表为L【1.n】,第i趟排序即从L【i…n】中选择关键字最小的元素与L(i)交换,每一趟排序可以确定一个元素的最终位置,这样经过n-1趟排序就可使得整个排序表有序。


7、堆排序


8、路归并排序

:假设初始序列含有n个记录,则可以看成n个有序的子序列,每个序列的长度为1,然后俩俩归并,得到[n/2]个长度为2或1的有序序列,再俩俩归并,如此重复,直到得到一个长度为n的有序序列.

归并排序过程如图所示:

在这里插入图片描述

归并排序的思想是分治,大化小,小归并成大的。

平均时间复杂度O(nlogn),最坏时间复杂度O(nlogn),空间复杂度O(n)


9、 基数排序



10、算法性质


在这里插入图片描述



版权声明:本文为Jiyijia原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。