
算法
William 壹
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
基数排序
基数排序介绍基数排序(Radix Sort)是桶排序的扩展,它的基本思想是:将整数按位数切割成不同的数字,然后按每个位数分别比较。具体做法是:将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。基数排序图文说明通过基数排序对数组{53, 3, 542, 748, 14, 214...原创 2020-04-02 14:48:07 · 438 阅读 · 0 评论 -
桶排序
算法过程:1.找到Max,Min2.拆高位3.申请桶4.元素入桶5.桶排序6。放回原数组7.释放思想一句话总结:划分多个范围相同的区间,每个自区间自排序,最后合并。桶排序是计数排序的扩展版本,计数排序可以看成每个桶只存储相同元素,而桶排序每个桶存储一定范围的元素,通过映射函数,将待排序数组中的元素映射到各个对应的桶中,对每个桶中的元素进行排序,最后将非空桶中的元素逐个放入原序列...原创 2020-04-02 14:36:53 · 188 阅读 · 0 评论 -
哈希查找
方法介绍原创 2020-04-02 11:46:48 · 195 阅读 · 0 评论 -
十排序,三查找
排序:1.冒泡排序:前一个元素与后一个元素进行大小比较,如果前面的比后面的大,则交换。掌握—>2个优化1)已经是有序的2)有序和无序的结合2.简单选择排序:找到当前待处理的最小值或者最大值,放到对应的位置3.直接插入排序:将待排序数据分成两部分,一部分有序,一部分无序,将元素依次插入到有序中。掌握:应用场合1)元素特别少的时候2)元素在排序前的位置距齐排好序的最终距离不远的...原创 2020-03-28 21:00:06 · 128 阅读 · 0 评论 -
Top(K)问题---堆排序应用
Top(k)问题详细描述,超级详细!!转载 2020-03-24 20:10:26 · 126 阅读 · 0 评论 -
堆排序优化---HeapSort
2020.3.24--------优化代码量由于上篇文章堆排序存在大量的重复代码,因此我们可以定义一个最大值MAX.完全二叉树是从右向左依次赋空的,只有存在左孩子的情况下才会有可能存在有孩子。1.定义MAX = Left2.如果存在右孩子,比较左右孩子大小。如果右孩子比左孩子大,讲Right赋值给MAX3.比较arr[MAX]与父亲节点的大小。如果比父亲节点大,交换,重新定义父亲节点#i...原创 2020-03-24 16:46:40 · 178 阅读 · 0 评论 -
堆排序-----HeapSort
1. 完全二叉树上图,就是一个完全二叉树,其特点在于:从作为第一层的根开始,除了最后一层之外,第N层的元素个数都必须是2的N次方;第一层2个元素,第二层4个,第三层8个,以此类推。而最后一行的元素,都要紧贴在左边,换句话说,每一行的元素都从最左边开始安放(生成的顺序是从上往下,从左往右),两个元素之间不能有空闲,具备了这两个特点的树,就是一棵完全二叉树。2.小根堆我们假设有一棵完全二...转载 2020-03-24 16:21:35 · 227 阅读 · 0 评论 -
逆序对的数量-------归并排序应用
题目描述给定一个长度为n的整数数列,请你计算数列中的逆序对的数量。逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满 i < j 且 a[i] > a[j],则其为一个逆序对;否则不是。数据范围1≤n≤100000输入样例:62 3 4 5 6 1输出样例:5算法思路:1.利用归并算法,分区mid=l+r>>22.递归,left[l,mi...原创 2020-03-24 11:19:35 · 232 阅读 · 0 评论 -
归并排序
将两个的有序数列合并成一个有序数列,我们称之为"归并"。归并排序(Merge Sort)就是利用归并思想对数列进行排序。根据具体的实现,归并排序包括"从上往下"和"从下往上"2种方式。从下往上的归并排序:将待排序的数列分成若干个长度为1的子数列,然后将这些数列两两合并;得到若干个长度为2的有序数列,再将这些数列两两合并;得到若干个长度为4的有序数列,再将它们两两合并;直接合并成一个数列为...原创 2020-03-24 08:51:21 · 163 阅读 · 0 评论 -
希尔排序
希尔排序是1959年,Shell发明的,这是第一个突破O(n2)的排序算法,他与直接插入排序不同的是,他会优先比较距离较近的元素。因此,希尔排序又叫做缩小增量排序。1、算法思想其工作原理是定义一个间隔序列来表示排序过程中进行比较的元素之间有多远的间隔,每次将具有相同间隔的数分为一组,进行插入排序,大部分场景中,间隔是可以提前定义好的,也可以动态生成。希尔排序的实质就是分组的插入排序2、优缺...转载 2020-03-23 15:34:56 · 599 阅读 · 0 评论 -
枢轴优化
如何避免枢轴选取的是最大值或最小值?1.先找最小值最大值(耗费时间,得遍历一遍)2.首位中间三个数比较,选出中间的数。(二个数字相同—小概率)3.rand14.rand3,选中间值随机数值,靠系统时间(小概率事件—时间消耗,有可能随机到同一个位置)5.9选一,分成三组,在每一组中选择三个数的中间值,然后再从三个中间值中选取中间值。4.枢轴重复:8,12,13,8,2,8,1,8,8...原创 2020-03-23 14:03:16 · 207 阅读 · 0 评论 -
快速排序----区间分割法
#include<stdio.h>int Sort(int arr[],int nLow,int nHigh){int temp;temp = arr[nLow];while(nLow < nHigh){ //从后向前找比标准值小的 while(nHigh > nLow) { //找到了 if(arr[nHigh] < temp) { ...原创 2020-03-23 12:45:20 · 1040 阅读 · 4 评论 -
快速排序--挖坑填补法
看了这片文章,确实非常形象,http://blog.youkuaiyun.com/morewindows/article/details/6684558QuickSort:找一个标准值(枢轴),将比标准值小的放到左侧,比标准值大的放在它右侧,根据标准值位置将当前数据分割成两部分,两部分分别重复以上以上操作#include<stdio.h>int Sort(int arr[],int nLo...原创 2020-03-23 10:33:11 · 221 阅读 · 0 评论