排序
qx LIU 2000
这个作者很懒,什么都没留下…
展开
-
数据结构-排序-计数排序
计数排序–非比较排序 首先我们要明白两个概念: 绝对映射 相对映射 我们创建要给count数组,统计出Arr数组每个数出现的次数 A[ i ] 的值为多少,就给count对应位置进行操作:count[ A [ i ]]++ 此时两数组的对应关系叫做 绝对映射。 再来看一种情况 如果绝对映射的方法创建数组,那么 0-9 个空间就浪费了,所以我们采用相对映射。0代表10,1代表11,2代表12,即为 min+i 则可还原为原数据。 完整的代码 void CountSort(int* a, int n原创 2021-05-14 02:03:50 · 158 阅读 · 0 评论 -
数据结构-排序-归并排序
归并排序 递归算法 void _MergeSort(int * a, int left, int right, int * tmp) { if (left >= right) return; int mid = (left + right) >> 1; _MergeSort(a, left, mid, tmp); _MergeSort(a, mid + 1, right, tmp); int begin1 = left, end1 = mid; int begin2 =原创 2021-05-13 17:29:48 · 95 阅读 · 0 评论 -
数据结构-排序-快排
快排 算法思想 单趟排序:选出一个KEY,一般是最左边的或者是最右边的,把KEY放到他正确的位置上去,左边的比KEY小,右边的比KEY大。左边的值做KEY,则右边的先走。 三数取中 //三数取中,可以优化有序数列的情况。但当其元素都相等的时候,就无法进行优化。 int GetMidIndex(int *a, int left, int right) { int mid = (left + right) >> 1; if (a[left] < a[mid]) { if (a[mi原创 2021-05-11 15:49:45 · 115 阅读 · 0 评论