数据结构
Jerich morningStar
想要变强!
展开
-
堆排序(Heap Sort)
1. 将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点2. 将其与末尾元素进行交换,此时末尾元素就为最大值 ;3. 将剩余n-1个元素重新构造成一个堆(注:只有堆顶元素不满足堆序性,所以只需对堆顶元素进行下滤操作),这样操作之后堆顶元素就又是这n-1个元素的最大值。如此反复执行,便能得到一个有序序列了。原创 2022-11-02 00:07:26 · 200 阅读 · 0 评论 -
二叉树与哈希表
二叉树先序、中序、后序遍历代码实现;哈希表解决冲突常用的两种方法。原创 2022-08-27 14:58:14 · 398 阅读 · 0 评论 -
数据结构:栈和队列
面试题:两个栈实现队列的先进先出。原创 2022-08-26 19:03:30 · 171 阅读 · 0 评论 -
计数排序(Count sort)
首先找出待排序数组最大值,以确定辅助数组(用来计数)下标的最大值,如上图序列中最大值为9,则辅助数组下标为0~9;接着遍历原序列,将原序列元素等于辅助数组下标的辅助数组元素的值+1(计数的过程)......原创 2022-08-16 21:38:16 · 294 阅读 · 0 评论 -
基数排序(Radix sort)
定义10个“桶”,编号0到9,先从个位开始,放进对应号的桶中,再从每个桶中按照队列先进先出,挨个取出;再按照十位,重复操作。也就是放一次取一次!放取次数由最大元素的位数决定。原创 2022-08-04 21:04:41 · 372 阅读 · 0 评论 -
归并排序(Merge sort)
1.将序列中待排序数字分为若干组,先以(left+right)/2为分界分成两组,再对左半边和右半边分别递归,直到每个数字分为一组(其是就是先对半分,直到分成都是一个,有点像二叉树);2.将若干个组两两合并,保证合并后的组是有序的(合并样子有点像倒过来的二叉树);3.重复第二步操作直到只剩下一组,排序完成。...............原创 2022-07-28 19:44:05 · 330 阅读 · 0 评论 -
快速排序(Quick sort)
1.选定中心轴(基准值);2.将右侧小于中心轴的数字放到中心轴的左边,将左侧大于中心轴的数字放到中心轴的右边(实现上可以用左右索引)直到左右索引相遇,将中心轴位置的值放到相遇的索引位置即实现了以中心轴为划分左右;3.分别对左右子序列重复前三步操作,直到子序列长度为1,递归跳出,排序完成。.........原创 2022-07-26 21:28:19 · 166 阅读 · 0 评论 -
希尔排序(Shell sort)
先以数组长度的一半的间隔分组,各组内用插入排序;间隔减半再分组进行组内排序,直到间隔为1,再进行一次插入排序即可。原创 2022-07-26 21:24:56 · 156 阅读 · 0 评论 -
插入排序(Insert sort)
将待排序的数组分成两个数组,左边是有序数组,右边时无序数组(一般左边第一个元素arr[0],自成一个有序数组,毕竟只有一个元素),然后将无序数组的第一个数据插入到有序的数组当中去。于是有序的数组越来越大,等到无序的数组中的所有的元素都插入到了有序的数组中的时候,排序就完成了。.........原创 2022-07-26 21:23:22 · 398 阅读 · 0 评论 -
选择排序(Select sort)
每次使用待排序数组第一个位置(不一定是arr[0],待排序数组长度会越来越短)的数据和之后的数据比较,找到更小的那个数据然后两者交换。这样的话,小的数据就慢慢挪到数组的前面去了,数组也就变得有序,每一轮排序只需要进行一次的交换。.........原创 2022-07-25 20:30:50 · 580 阅读 · 1 评论 -
冒泡排序(Bubble sort)
冒泡排序算法+代码优化原创 2022-07-25 16:26:15 · 892 阅读 · 0 评论