王道考研复习-数据结构
Mystic Musings
木叶飞舞之处,火亦生生不息
展开
-
408复习-数据结构-外部排序
外部排序·败者树最佳归并树。原创 2023-12-16 10:07:31 · 138 阅读 · 0 评论 -
408复习-数据结构-基数排序
(1)按照元素每位的数值进行排序(2)定制10个双向队列元素的数组,用于排序时候存取数据(3)从各位一直往最大位取数,然后放入对应下标的双向队列中再拿出来输出样例:原创 2023-12-13 22:41:46 · 77 阅读 · 0 评论 -
408复习-数据结构-快速排序
(1)将数组最左边那位作为基准值,需要将这个基准值放在中间位置,在每轮排序后左边的都比基准值小或相等,右边的比基准值大或相等(2)下一轮需要划分成左右两部分继续排序3.总结原创 2023-12-10 15:33:34 · 85 阅读 · 0 评论 -
408复习-数据结构-堆排序
(1)堆的本质就是完全二叉树,一般堆使用数组(顺序表)实现(2)大根堆:根节点比子节点大。小根堆:根节点比子节点小(3)对于一个待排序数组 **一.** 先要将数组转换成大根堆(用于升序排序)或小根堆(用于降序排序):从拥有子节点的最后一个节点开始调整,检查哪个子节点更大()或更小(),一路交换下去,直到满足条件。二. 从最后1个元素到第2个循环下去,每次将当前元素与第一个元素交换后,后面的元素经过交换后已经满足了有序,但是第一个元素时被交换上去的,和其他节点相比是无序的。(根据上一个图片87和0原创 2023-12-12 23:40:37 · 78 阅读 · 0 评论 -
408复习-数据结构-归并排序
(1)使用分治法的思想(2)使用递归算法的将数组划分成两个子数组,当划分长度为1的时候就天然有序,就可以回溯回去了,接着堆两个数组进行排序(3)将两个有序数组进行排序3.总结原创 2023-12-13 00:11:48 · 55 阅读 · 0 评论 -
408复习-数据结构-冒泡排序
/范围从倒数第2位缩小到第0位i >= 0;--i) {//用于判断本次遍历是否交换了值j < i;++j) {//如果比右边大就交换//没有变化,表明已经有序了,可以推出了break;run(arr);print(arr);改进版的双向冒泡排序(鸡尾酒排序)i < right;--right;i > left;break;原创 2023-12-10 14:50:39 · 67 阅读 · 0 评论 -
408复习-数据结构-希尔排序
3.总结原创 2023-12-10 14:07:43 · 49 阅读 · 0 评论 -
408复习-数据结构-插入排序
每次将一个待排序的记录按其关键词的大小插入到已经排好序的子序列中。例如下图:2.2带哨兵的实现方式思路:数组第0位在存储时候不使用,将临时变量存放在第0位,在循环右移的时候也不需要判断越界情况,因为最后在比较第0为的时候是和自己比较,是等于的情况,也就会停下来2.3优化代码–折半查找+哨兵在上一个例子的基础上来说右移的操作还需要做比较,而用二分查找可以直接找到那个待插入位置,在右移的时候就可以直接操作不再需要比较操作。这种情况下在数据量非常大的时候可以优化–但是优化不是非常明显。3.总原创 2023-12-09 22:39:32 · 52 阅读 · 0 评论