排序
JiaXiang.
数据结构学习
展开
-
归并排序
算法思想:把两个或多有序子序列合并成为一个,通常为2路归并,或者k路归并。性能:空间复杂度O(n),时间复杂度O(nlogn),稳定算法。所要比的趟数等于“log2^n向上取整”。原创 2023-11-27 18:04:14 · 331 阅读 · 0 评论 -
希尔排序
算法思想:先将待排序的表划分成若干个小表,选取一个增量d,例如L[i,i+d,i+2d...]的特殊子表,对各个表内进行直接插入排序,缩小增量d,重复上述过程,直到d为1为止。性能:空间复杂度:O(1),时间复杂度:未知,但总和优于直接插入排序,最坏:O(n^2),最好O(n^1.3)。稳定性:不稳定,仅适用于顺序表。原创 2023-11-10 21:03:32 · 46 阅读 · 1 评论 -
堆排序
堆在逻辑结构上是顺序存储的完全二叉树,左孩子2i,右孩子2i+1,付结点是i/2。大根堆,根>左右。小根堆,左右>根。算法思想:建堆:比如构造大根堆,就是将所有的非叶子结点(编号原创 2023-10-27 22:45:05 · 90 阅读 · 1 评论 -
选择排序
算法思想:每一趟在待排序元素中选择关键字最小的元素加入有序序列,必须进行n-1轮的处理。性能:空间复杂度O(1),时间复杂度O(n^2)稳定性:不稳定适用于链表,顺序表。原创 2023-10-27 18:11:30 · 40 阅读 · 1 评论 -
快速排序
算法思想:将一个待排序的表L[1...n]中任取一个元素作为枢纽pivot,然后将所有小于pivot的数据放入L[1...k-1],将所有大于pivot的数据放入L[k+1...n],最后将pivot放入k的位置,这样的一次排序叫做“划分”,分别递归的将左右两个表,再次划分直到每一部分只有一个数据或者空位置,即排序完毕算法表现取决于递归深度,每次划分越均匀,则递归深度越低。每次划分越不均匀,则递归深度越深。性能:空间复杂度,最好O(n),最坏O(logn)。原创 2023-10-27 17:23:34 · 31 阅读 · 1 评论 -
冒泡排序
算法原理:从后往前或者从前往后,两两比较相邻元素的值,若为逆序则交换他们,直到序列比较完毕,称这样的过程为一次“冒泡排序”,最多比较n-1次。每一趟都可以最终确定一个数据的元素,已经确定的元素则不需再比较。性能空间复杂度:O(1)时间复杂度:最好O(n)有序下,最坏O(n^2)逆序下,平均O(n^2)。稳定性:稳定适用于:顺序表,链表。原创 2023-10-25 18:06:21 · 35 阅读 · 1 评论 -
插入排序
每次将一个待排序的元素按其关键字大小插入到已排好的序列中,直到全部插入完毕直接插入排序:适用于链表,顺序表折半插入排序:只适用于顺序表性能:最好O(n),最坏O(n^2)稳定性:稳定。原创 2023-10-24 18:33:00 · 31 阅读 · 1 评论