Sort

目录

BubbleSort&SelectionSort 

InsertionSort

MergeSort

quickSort

基数排序


 

BubbleSort&SelectionSort 

起泡排序:

  1. 无序向量。位置毗邻,就像气泡,那选择最大值排序就是打水漂了。
  2. 给定n个可比较的元素,按非降序排列,依次比较每一对相邻的元素,第一趟扫描完成后最大的元素被交换到向量尾部,直到整趟扫描都没有发生交换,则排序完成。
  3. 如果每个元素都是逆序,那么一个元素最坏迭代n次,所以最坏时间复杂度是O(n^2);如果每个元素都是顺序,那么只需要比较n-1次,故最好时间复杂度是O(n),平均时间复杂度是O(n^2)。

每趟扫描交换最坏情况下都会比较n次,交换n次,其实质是将找到当前最大元素M并排到尾部,而且交换后的向量还是无序的,所以为什么不直接在经过O(n)次比较后将M放到尾部。例如上滤操作,懒惰删除?

而选择排序是无序列表里的算法,选择最大的元素排到最后,selectMax()算法执行一次复杂度是O(n),一共迭代n次,所以时间复杂度是O(n^2),没有最好最坏之说。

InsertionSort 

  1. 就地算法,稳定,将当前元素与前缀有序子序列里的元素挨个比较,最坏时间复杂度是O(n^2),最好时间复杂度是O(n),平均时间复杂度是O(n^2)。
  2. 选择排序是无序里面找出最大的元素放到有序的后面(这样就是从大到小?);插入排序是从无序里面拿出最前面的元素,插入到有序里面还是有序。前者跟无序序列比较后插入,后者跟有序序列比较后再插入(再套一个二分查找?会不会更快)

MergeSort & quickSort

归并排序:

  1. 稳定,空间复杂度O(n),T(n)=O(log n)
  2. 有序子向量排序需要时间,而划分子向量只需О( 1 );

快速排序

  1. 不稳定的。就地实现。O(nlogn)
  2. 划分子向量,找出pivot轴点需要时间,而有序子向量排序只需О( 1 );

基数排序

稳定的

轴点:插值查找,快速排序。

堆排序

锦标赛树

 

最好时间复杂度 最坏时间复杂度 平均时间复杂度 空间复杂度 稳定性 算法思想
起泡排序 О(n) О( О(   稳定  
选择排序

О(

О( О(      
堆排序     О( nlogn ) 就地算法    
插入排序 О(n) О(   就地算法 稳定 减而治之
归并排序         稳定 分治策略
快速排序 О( nlogn ) О( О( nlogn )   不稳定 分治策略
基数排序         稳定  
锦标赛树     О( nlogn )      
             
             
  1. 排序里面又用到了查找。选择排序:二分查找、顺序查找

 

  • A,quicksort 快速排序

  • B,radixsort 基数排序

  • C,countsort 计数排序

  • D,heapsort 堆排序

  • E,mergesort 归并排序

  • F,insestsort 插入排序

  • G,shellsort 希尔排序

  • H,bubblesort 冒泡排序

Repeatedly compare adjacent elements, swapping them if they are in reverse order until ordered:
反复比较相邻元素,若为逆序则交换,直至有序:____

 

The original sequence is divided into two parts with the pivot as the boundary. Recursively sort them separately:
将原序列以轴点为界分为两部分,递归地对它们分别排序____

 

Sort the first half and the second half of the original sequence, and merge the two parts:
将原序列前半部分和后半部分,分别排序,再将这两部分合并:____

 

Constantly remove the smallest element from the original sequence:
不断从原序列中取出最小元素:____

 

The elements in the original sequence are a range of integers, the sorting result can be obtained by calculating the number of occurrences of each possible integer:
原序列中的元素是一定范围内的整数,计算每个可能的整数在其中出现的次数,便可得排序结果____

 

The sorting method people usually use when playing cards:
抓扑克牌时人们常用的排序方法:____

 

全部评论

相关推荐

03-19 09:58
河海大学 Java
最喜欢春天的奇亚籽很...:同学,是小红书不是小哄书,一眼就能看到的错误
投了多少份简历才上岸
点赞 评论 收藏
分享
04-16 10:27
已编辑
美团_Saas_后端开发
今天周一休息,突发奇想写一篇阶段总结。如题,我已经去了一个和Java彻底毫无关联的行业。曾经我以为自己能在计算机行业发光发热,拿到美团offer那会感觉自己天都亮了。没想到刚入行一年多就当了逃兵。从最开始的热爱到现在一看到代码就厌恶,不知道自己经历了什么。所以我去干什么了?答案是:在成都当了租房销售。上班那会压力大了就念叨着去干租房中介,但是一直下不去这个决心,想着自己学了四年多的计算机知识,终究还是不甘心。终于在某一天准备八股文的时候,看着无数篇和工作内容关系不大的理论知识,那一刻下定决心,决定尝试一下销售行业,也算是给自己一个交代。后面阴差阳错的投了成都自如去当租房管家,没想到面试很顺利,在当天一百多个面试的人里面,我成为了为数不多通过的几个幸运儿之一。目前已经培训通过,正式入职,也开了单,有压力但是每天过得很开心,真心喜欢那种和人交流的感觉,哪怕是最后没有选择找我租房。说这些也是想告诉那些大三,大四正在找Java实习而焦虑的同学:你们现在还年轻,选择很多,容错率也很高,可以尽情去尝试自己喜欢的行业和工作。不用因为某一次的面试没通过或者简历石沉大海而焦虑,更不用因为身边人都在挤编程的独木桥就强迫自己跟风。也算是自己的碎碎念吧,也希望自己能在新的领域取得一点小成就。也祝牛油工作顺利!
沉淀小子:干啥都不丢人啊,生存是必须要的,销售很考验一个人综合素质能力的,好的销售人脉和资源可不比写字楼的白领差啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务