排序算法
常见排序算法的C/C++实现,方便记忆和查找
不想学习啊啊
我本将心向明月,奈何明月照沟渠
展开
-
2路归并排序
2. 利用递归将待排序数组划分到每组只剩一个元素,相邻的两组有序序列进行合并。1. 申请一个与待排序数组一样大小的辅助数组。最好最坏平均都是O(nlogn)O(n)(需要一个辅助数组)3. 最终得到全部有序。原创 2023-10-04 08:00:00 · 139 阅读 · 0 评论 -
堆排序
2. 大根堆:对于树中任意一个结点n,n大于它的左孩子、右孩子,根结点最大。3. 小根堆:对于树中任意一个结点n,n小于它的左孩子、右孩子,根结点最小。4. 使用大根堆排序得到递增序列,使用小根堆排序得到递减序列。1. 堆分为大根堆、小根堆,逻辑上是一棵完全二叉树。2. 将第一个也就是最大的元素与最后一个元素交换。3. 对于交换后的第一个元素,重新调整为大根堆。最好最坏平均都是O(nlogn)1. 将待排序序列建立成大根堆。4. 重复2、3,一共n-1次。调整为大根堆是关键,下面是代码。原创 2023-10-03 17:59:06 · 144 阅读 · 0 评论 -
快速排序
总是以第一个元素为基准,目标是找到基准的位置,使得右边都大于基准,左边都小于基准,然后再递归左右的子表,从而找到所有元素的位置,完成排序。最好情况:O(nlogn)最坏情况:O(n^2)由于要使用递归函数栈。原创 2023-09-28 08:00:00 · 91 阅读 · 0 评论 -
简单选择排序
每趟找到未排序序列的最小值放在最前面,一共n-1趟。最好情况:O(n^2)最坏情况:O(n^2)原创 2023-09-27 14:34:58 · 40 阅读 · 0 评论 -
冒泡排序
每趟从前往后(或从后往前)两两比较相邻元素的值,若为逆序(即A[ j ]>A[ j+1]),则交换它们,最后的元素一定是最大的。一共进行n-1趟就可以排序成功。最坏情况:O(n^2)原创 2023-09-26 20:54:34 · 46 阅读 · 0 评论 -
直接插入排序
直接插入排序的代码实现原创 2023-08-31 14:45:43 · 111 阅读 · 0 评论