![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法:排序
常用排序算法的思想和应用场景
z_stand
远离颠倒梦想,究竟涅槃
展开
-
计数排序 算法
算法思路 统计待排序数列中每个数字出现的次数 入数据结构的过程其实就是排序的过程 最后再按照统计结果覆盖原序列就行了 PS: 前提条件是知道排序元素的范围 算法实现 void count(vector<int> &arr, int range) { vector<int> count(range+1,0); for (int i = 0;i < arr...原创 2020-02-11 20:11:12 · 160 阅读 · 0 评论 -
归并排序 算法
算法思路 将一个数列不断拆分为子序列,直到只剩下0或者1个元素 再将子序列按顺序合并为原来数列的大小,完成排序 代码实现 //合并两个有序数组 vector<int> merge_two_sort(vector<int> &arr1, vector<int> &arr2) { vector<int> result; int i...原创 2020-02-11 14:59:13 · 185 阅读 · 0 评论 -
堆排序 算法
算法思路 待排序元素按照大小,在二叉树位置上排列 构造最大堆(最小堆)跟节点元素为所有元素最大的一个 每次取构造最大堆完成的根节点,并重新构造最大堆 重复以上步骤,直到堆中只剩下一个元素则排序完成 算法实现 void max_heap(vector<int> &arr, int beg, int end) { int dad = beg; //因为数组下标从0开始,所以s...原创 2020-02-11 14:39:57 · 197 阅读 · 0 评论 -
选择排序 算法
算法思路 维护一段有序数列,同时遍历待排序数列,找到最小的元素插入有序数列中 重复,直到待排序数列没有剩余元素 代码实现 void select_sort(vector<int> &arr) { for (int i = 0;i < arr.size(); ++i) { int temp = arr[i]; int index = i; for (int...原创 2020-02-11 14:11:23 · 174 阅读 · 0 评论 -
希尔排序 算法
算法思路 插入排序的改进版,选择插入距离远的元素 选择一个间距,将序列分成很多子序列并行插入排序 降低间距,并重复插入元素,直到间距将为1,完成排序。 算法实现 void shell_sort(vector<int> &arr, int beg, int gap) {//gap为1时即直接插入排序 for (int i = beg + gap; i< arr.siz...原创 2020-02-11 13:52:48 · 214 阅读 · 0 评论 -
插入排序 算法
算法思路 维护一段有序数列 同时遍历待排序数列,在有序数列中找到合适的位置插入元素 基本代码 实现如下: void insertion(vector<int>& arr){ for(int i=1;i<arr.size();i++){ int temp=i; for(int j=i-1;j>=0;j--){//有序序列不断得增加 if(arr[t...原创 2020-02-11 13:28:27 · 146 阅读 · 0 评论 -
快速排序 算法
算法思路 序列终任意选择一个数,把序列分为比这个数大和比这个数小的两个子序列 不断重复以上步骤(递归) 代码实现 void partition(vector<int> &arr, int begin , int end) { int ret = arr[begin]; int index = begin + 1; } ...原创 2020-02-11 10:52:44 · 139 阅读 · 0 评论 -
冒泡排序 算法
算法思路: 从第一个元素开始遍历,比较当前元素和下一个元素的大小 不符合,则交换 结束最后一个元素,则重新遍历 实现: void bubble_sort(vector<int> &arr) { for (int i = 0;i < arr.size() - 1; ++i) {//交换size - 1次 for (int j = 0;j < arr.size...原创 2020-02-10 19:38:41 · 494 阅读 · 0 评论 -
十大排序算法 导图总结
以下为我们经常用到的十大典型排序算法导图,很多设计以及优化的思想值得去参考学习 因为代码较多,所以都添加到对应的实现注释中了,相关代码可以从Mind-mapping获取xmind源文件 参考文档: 基数排序 堆排序 希尔排序 https://blog.csdn.net/real_lisa/article/details/82685407 ...原创 2020-01-11 21:22:58 · 260 阅读 · 0 评论