考点介绍:
排序算法属于数据结构和算法的基础内容,并且也是大厂笔试中的高频考点。
快速排序算法底层采用了分治法。基本思想是:
1.先取出数列中的第一个数作为基准数
2将数列中比基准数大的数全部放在它的右边,比基准数小的数全部放在它的左边
3.然后在对左右两部分重复第二步,直到各区间只有一个数
相关题目及解析内容可点击文章末尾链接查看!
一、考点试题
1.设有5000个待排序的记录的关键字,如果需要用最快的方法选出其中最小的10个记录关键字,则用下列哪个方法可以达到此目的 。( )
A. 快速排序
B. 堆排序
C. 归并排序
D. 插入排序
解答:正确答案:B
首先,这个题的宗旨是以最短的时间达到局部有序!所以应用堆排序这样处理......
2.以下哪种不是非稳定排序算法
A.归并排序
B.快速排序
C.堆排序
D.希尔排序
解答:正确答案是 A
(1)冒泡排序
冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,我想你是不会再无聊地把他们俩交换一下的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法......
3.string = "192.0.0.1?!289.0.0.1!0.0.0.0!192.163.10.28?192.0.0.1"
要求:返回一个IP数组,并且按IP最后一位排序返回。
P.S.语言随意,只需要能够正确排序返回接口。(Java、Python、Shell均可)
解答:
4.快速排序的基本思想是什么?
解答:该思想可以概括为:挖坑填数 + 分治法。
1、从要排序的数据中取一个数为“基准数”。
2、通过一趟排序将要排序的数据分割成独立的两部分,其中左边的数据都比“基准数”小,右边的数据都比“基准数”大......
二、考点文章
高级排序算法——快速排序
快速排序名字可不是盖的,很多程序语言标准库实现的内置排序都有它的身影,我们就直奔主题吧。 和归并排序一样,快排也是一种分而治之(divide and conquer)的策略。归并排序把数组递归成只有单个元素的数组,之后再不断两两 合并,最后得到一个有序数组......
三大经典排序 | 冒泡排序,选择排序,快速排序
排序算法是日常使用最频繁的一个算法,生活中也很常见什么排队呀按照高矮次序呀,分数按照一个从高到低的排序等等,但是如果是要设计出来面对基数很大又要很快的排序方法这就是需要很大难度了,先给大家看看排序的种类有哪些,和其对应的时间空间复杂度......
字符串返回数组并排序(算法题)
今天在微信群里看到有人抛出这么一道题:
string = "192.0.0.1?!289.0.0.1!0.0.0.0!192.163.10.28?192.0.0.1"
#要求返回一个ip数组,并且按照ip最后一位排序返回......
三、考点视频
直接插入排序和最佳复杂度
本题是校招的常见考点之一,这里考察的是简单排序的直播插入排序。首先要对熟悉排序算法本身,不要把选择和插入搞混。其次是针对每一轮的排序,考虑最少的比较次数是多少......
帖子还没人回复快来抢沙发