![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法、数据结构
清舞sunny
这个作者很懒,什么都没留下…
展开
-
非比较排序1:计数排序和桶排序
一、计数排序稳定排序适用于小数据范围排序假设待排序序列的元素范围为0~k-1;创建一个长度为k的数组c,c[x]表示在待排序序列中值小于x的元素个数;则x在排序后的序列中的位置即为c[x]c++代码:void CountSort(vector<int>& sequence, int max_k){ vector<int> count(max_k+1,0);...原创 2018-06-11 20:59:46 · 305 阅读 · 0 评论 -
非比较排序2:基数排序
一、基数排序稳定排序按位排序:从低位(个位)到高位,取序列中元素相应位数字计数排序c++代码://供RadixSort用的计数排序void CountSort1(vector<int>& sequence, vector<int> vec_digit, int max_k=9);void RadixSort(vector<int>& seq...原创 2018-06-11 22:27:10 · 183 阅读 · 0 评论 -
排序算法总结
分类:比较排序:通过比较关键值来决定元素间的相对位置,其时间复杂度不能突破θ(nlgn) (lgn以2为底)非比较排序:不通过关键值来决定元素间的相对位置,其时间复杂度可以突破θ(nlgn),以线性时间运行比较排序: 插入排序:简单插入排序 希尔排序 交换排序:冒泡排序 ...原创 2018-06-13 16:22:56 · 193 阅读 · 0 评论 -
比较排序1:简单比较排序
sorting(按从小到大排序)一、简单插入排序(插入排序)稳定排序把新的值插入到前面已经排好的序列中c++程序:// 输入:待排序序列的引用void InsertSort(vector<int>& sequence){ int len = sequence.size(); // 序列长度 int key; int j; for(int i...原创 2018-06-08 15:51:14 · 329 阅读 · 0 评论 -
比较排序2:快速排序
sorting(按从小到大排序)一、快速排序(交换排序)不稳定排序步骤:1、选择主元数据 x , 把序列分为两个子序列(<=x 和 >x)2、按第一步递归处理两个子序列c++代码://处理sequence[p~q]子序列void QuickSort(vector<int>& sequence, int p, int q){ int x = sequen...原创 2018-06-08 16:47:33 · 265 阅读 · 0 评论 -
查找:顺序查找、二分查找、分块查找
一、顺序查找按索引顺序查找,可用于查找无序序列int SequenceSearch(vector<int> seq, int key){ const int c_len = seq.size(); for(int i=0; i<c_len; ++i) if(seq[i] == key) return i; // 找到ke...原创 2018-06-16 13:33:08 · 1513 阅读 · 0 评论 -
比较排序3:堆排序
sorting(按从小到大排序)一、堆排序(选择排序)不稳定步骤:大顶堆:每个节点的值都大于等于其左右子节点的值(用于升序)小顶堆:每个节点的值都小于等于其左右子节点的值(用于排序)1、构造初始堆将序列构造成二叉树(按下标构造)2、构造大顶堆(1)从最后一个非叶子节点开始,从右向左,从下至上进行调整(找出父节点、左子节点、右子节点中最大的与父节点交换,使得父节点最大),使得堆顶元素最大(2)将堆顶...原创 2018-06-09 15:47:29 · 312 阅读 · 0 评论 -
比较排序4:归并排序
一、归并排序稳定排序步骤:1、把待排序序列一分为二2、递归的对每一个子序列进行排序3、合并两个有序序列合并:比较两个排好序的子序列首部的数字(即最小的),找到原序列最小的值,去掉这个最小值,继续比较两个子序列首部的,依次找到序列第二小第三小......c++代码://复制vectorvector<int> vec_assign(vector<int> seq, int b...原创 2018-06-10 14:10:41 · 253 阅读 · 0 评论 -
比较排序5:希尔排序
一、希尔排序(插入排序)又称缩小增量排序不稳定排序方法:希尔排序在序列中进行跳跃式分组,通过某个增量将原始序列分成多组,针对每组进行插入排序;再减小增量,继续分组排序;直至增量减为1,则整个序列被分为一组。与简单插入排序相比,希尔排序通过分组排序,逐渐使得值较小的数据在前,较大的数据在后,所以到后面只需要微调;而简单插入排序每次都要从后往前一步步调。例:原始序列 23, 6, 78, 120, ...原创 2018-06-10 15:27:32 · 867 阅读 · 0 评论