常用sort算法比较

常用sort算法比较_第1张图片

  Search和Sort是最基础的算法,基础但重要!

  Search的话,binary search最简单实用。

  Sort,上面是常用sort对比,看图,其实也没啥可说的了。

  注:1、bubble、selection和insert sort统称为简单排序,优点是程序相对简单、好写,但时间复杂度较差O(N^2);

      2、稳定排序(排序时,相同元素不调换位置):bubble、insert、merge和radix sort是稳定的;不稳定是因为元素调换位置时的间隔大于1(选择排序和希尔排序可以较明显看出);

  3、Shell sort基于insert sort,其时间复杂度由其程序中的递减间隔序列决定,最好也是O(N^2);heap sort基于selection sort,看起来其时间复杂度还不错,但是实际中和快速排序哪个更快,还得看情况;

   4、quick search,可以称之为网红排序。数据量较大时可用,但数据量较小时不如用插入排序。步骤:选主元—划分子集—递归分治,其中选主元可以用不同方法如:直接取左|右端元素、Median3等方法;

   5、merge sort除了要用额外空间O(N)外,都挺不错;

6、radix sort基于bucket sort,只是按基数去选择bucket,在某些情况下,其可以达到线性时间复杂度;

7、search 和 sort除了在要用的时候灵活使用外,重要的就是其时间、空间复杂度、稳定性、使用(情况)条件等。某些情况下(如面试),这些算法(套路)及其特点(白纸上)写到、背到滚挂烂熟,会是一个漂亮的开始……

  编程=算法+数据结构,编程就像做菜,数据结构是食材,算法是食谱,想把菜做好,备上好食材、好食谱,然后练吧。

  面试时,考官有可能让现场在黑板上写程序,边写边和考官讨论效果较好。但前提是得准备好,提前疯狂在白纸上和PC环境(leetcode啥的)上刷题是最直接的方法。

  恩……想必这些大家都知道,可以,就差行动了……

  本渣要去学习,88……

GitHub: https://github.com/666DZY666/Algorithm-and-Data-Structure

公众号:https://mp.weixin.qq.com/s/TPHLkR-NmUBURTIhMiSs2w

 

你可能感兴趣的:(常用sort算法比较)