- 博客(17)
- 收藏
- 关注
原创 归并排序
算法思想:把两个或多有序子序列合并成为一个,通常为2路归并,或者k路归并。性能:空间复杂度O(n),时间复杂度O(nlogn),稳定算法。所要比的趟数等于“log2^n向上取整”。
2023-11-27 18:04:14 331
原创 希尔排序
算法思想:先将待排序的表划分成若干个小表,选取一个增量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
原创 链队列的实现(带头结点)
/链队列的定义int data;}Linknode;}LinkQueue;首先定义一个结构体变量,含有数据域和下一个结点的指针,再设置一个分别指向队头和队尾的结构体LinkQueue,注意要使用LinkQueue里面的指针要注意引用方式是.不是->。
2023-10-04 21:34:16 224 1
原创 顺序栈的实现
由于顺序栈十分简单,不再通过复杂的方式去解释,采用顺序存储的栈称为顺序栈,它利用一组连续的存储单元存放自栈底到栈顶的数据元素,并且附设了一个指针(top)指向当前栈顶的元素位置。栈空条件S.top==-1或者S.top==0。栈满条件:S.top==Maxsize-1或者S.top==Maxsize,栈长:S.top+1或者S.top。出栈操作:栈非空时,先取栈顶元素,再讲栈顶指针减1。若是S.top==0的话则先栈顶指针减1然后再减1。栈顶指针S.top,初始时设置为S.top=-1。
2023-10-03 18:08:57 32
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人