摘要:
说明 十大排序算法可以说是每个程序员都必须得掌握的了,如果你们像从 0 详细学习每一篇,那么你们可以看前面的文章。 但是呢,有些人可能已经学过,想要快速复习一下,看看代码怎么写的,那么可以看这篇十大排序极简汇总。 术语铺垫 有些人可能不知道什么是稳定排序、原地排序、时间复杂度、空间复杂度,我这里先简 阅读全文
摘要:
计数排序、基数排序、桶排序,这几种排序算法,可能大家见到的这次不多,有些大学的教材课本中,甚至有些都没有计数排序算法。 所以呢,帅地今天就简单讲一讲计数排序算法吧,而不会像前面一样长篇大论,因为我觉得,每一个学习计数排序的,应该都是有一定的算法基础了,而对于计数排序,我觉得大家掌握最基本的思想就可以 阅读全文
摘要:
排序的时候我们可以选择快速排序或归并排序等算法。为了方便,我们把排序好的2G有序数据称之为有序子串吧。接着我们可以把两个小的有序子串合并成一个大的有序子串。 注意:读取的时候是每次读取一个int数,通过比较之后在输出。 按照这个方法来回合并,总共经过三次合并之后就可以得到8G的有序子串。 接下来把1 阅读全文
摘要:
掌握要求:基数排序只需要掌握基本的思想即可,代码写不出来也是没事滴 大家好,我是帅地,对于基数排序算法,考察的不多,我们需要掌握他的原理就可以了,看完这篇文章,我相信就能够大致掌握了。 老大:我简单给你讲下吧,你学过那么多排序,估计一看就懂了。基数排序,是一种基数“桶”的排序,他的排序思路是这样的: 阅读全文
摘要:
面试官:写一个堆排吧 堆排是基于堆的一种排序算法,对于堆的了解,请看可以管理时间的二叉堆(如果对堆的插入和删除不清楚,强烈建议先看堆),今天我们聊聊堆排的思想,复杂度以及稳定性 一、堆排思想 前情回顾:慧能给一尘解决了时间管理上的问题[可以管理时间的二叉堆]https://www.iamshuaid 阅读全文
摘要:
这篇文章,以对话的方式,详细着讲解了快速排序以及排序排序的一些优化。 一禅:归并排序是一种基于分治思想的排序,处理的时候可以采取递归的方式来处理子问题。我弄个例子吧,好理解点。例如对于这个数组arr[] = { 4,1,3,2,7,5,8,0}。 我们把它切割成两部分。 把左半部分和右半部分分别排序 阅读全文
摘要:
归并排序是建立在归并操作的一种高效的排序方法,该方法采用了分治的思想,比较适用于处理较大规模的数据,但比较耗内存,今天我们聊聊归并排序 一、排序思想 一天,小一尘和慧能坐在石头上,眺望着远方 分而治之: 分开来去治理 归并即合并之意 慧能随手画了一张图解释了一下 治:治理,这里就是将数组排序 对于合 阅读全文
摘要:
希尔排序(ShellSort)是以它的发明者Donald Shell名字命名的,希尔排序是插入排序的改进版,实现简单,对于中等规模数据的性能表现还不错 一、排序思想 前情回顾:漫画:什么是插入排序算法?(对插入排序不熟悉的强烈建议先阅读此文) 一天,一尘拿着扑克自己在那玩,刚被师傅看见了 数据有序程 阅读全文
摘要:
面试官:聊聊插入排序 插入排序是一种比较简单直观的排序算法,适用处理数据量比较少或者部分有序的数据,今天我们来聊聊插入排序 一、排序思想 只见慧能拿出了一副牌,洗了洗牌,然后放在桌子上,从牌顶摸了几张牌 说着说着慧能又摸了一张牌 一尘不假思索地回答道 怎么判断?这一下还把小一尘给问愣住了,但是细想了 阅读全文
摘要:
选择排序是一种简单直观的算法,今天我们聊聊选择排序的思想,代码以及复杂度 排序思想 一天,小一尘和师傅下山去了,在集市中路经一个水果摊,只见水果摊上摆着色泽基本相同但大小不一的苹果 师傅答应后,小一尘就去水果摊前买苹果了 他拿了一个袋子,从众多苹果中挑了一个最大的装入袋子,然后又从剩下的苹果中挑出了 阅读全文
摘要:
面试官: 写一个冒泡排序吧 冒泡排序是一个比较经典和简单的排序算法,今天我们从从算法本身,时间复杂度以及稳定性方面来看看冒泡排序,这些方面也是研究其他排序算法的一般思路 一、冒泡思想 在算法国内,相传有一位大师,他不喜做官,在民间传道受业,弟子三千,人称“克” 有一天,克带着得意弟子谦子去溪边游玩, 阅读全文