友情提示:本文共有 1099 个字,阅读大概需要 3 分钟。
八大排序算法,分别是插入排序,冒泡排序,选择排序,希尔排序,快速排序,堆排序,归并排序,基数排序,搞了数年也没有静下心来,思考一下这些基本的算话,用到时,面试时,考试时,细细的看百度出的博客,即是耐下心看了一两个,但是,还是一头雾水!WHY?
细想一下,这些算法,不就是我们实际生活中,常常面对各种排序场景问题,而要采取的方法手段?
插入排序比如斗地主抽牌,在未排序的队列中随便抽一张“关键牌”,放到合适的位置就好。
冒泡排序两两比较待排序的关键牌,每次直到找到一个极端(极大或者极小),让其冒泡。
插入排序,冒泡排序要说时间复杂度,最好的运气的话是O(n),最差最差也就是O(n^2),但是比较稳定,占用空间O(1)。
选择排序每次从待排序的牌中选出最小的牌,放到已排序区,专软柿子捏啊!
这个算法有些最简单,但是时间复杂度,最好的运气的话是O(n^2),最差最差也就是O(n^2),而且比较不稳定,占用空间O(1)。
希尔排序是插入排序基础上,在一个list中,每次递减划分步长,选择组的队员进行比较,索引位置不变,value值交换大小,数据朝着局部有序的方向发展。
这个算法有些复杂,时间复杂度最好的运气的话是O(n^1/3),平均是O(n^1.3),最差最差也就是O(n^2),但是比较不稳定,占用空间O(1)。
快速排序采用了分治法,选择一个基准牌,每次都把数据分为左小右大的两部分,再递归排序。
这个算法有些复杂,时间复杂度最好的运气的话是O(nlogn),最差最差也就是O(n^2),但是比较不稳定,占用空间O(logn)。
堆排序要么父节点都大于左右孩子,或者都小于左右孩子。
这个算法相对简单,时间复杂度无论好坏都是O(nlogn),占用空间O(1),但是比较不稳定。
归并排序相邻的递增结合比较大小,谓之归并。
这个算法相对简单,时间复杂度无论好坏都是O(nlogn),而且比较稳定,但是占用空间O(n)。
基数排序针对排序的对象不只是数值,取余,0到9的桶,还可以是字母等,本质也是对排序的对象的特点分治归类。
这个算法相对简单,时间复杂度最好的运气的话是O(n),最差最差也就是O(d(n+r)),占用空间O(logn),比较稳定。
大家都知道韩信点兵,多多益善。为什么呢?估计韩信的排序算法学的好,无论多大的数据压力,都在他的排序算法下,以最小的代价,搞定,屡屡取胜。无论是社会的工作者,还是学生,现在社会信息爆炸的今天,都要面临很多信息的优先性,及重要性的排序选择,算法来源于生活,是生活方式的抽象,可以帮助我们提高生活工作学习的效率,和生活品质!那您从这些排序算法中,映射生活方式,悟出多少生活技巧呢?
本文如果对你有帮助,请点赞收藏《几句话搞清八大排序算法 让您在生活学习中不惧各种排序》,同时在此感谢原作者。