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:
抓扑克牌时人们常用的排序方法:____

 

全部评论

相关推荐

04-06 16:59
已编辑
河南工业大学 Java
牛牛牛的牛子:最好扔了,实在没有选择的选择
点赞 评论 收藏
分享
ResourceUtilization:四六级不愧是大学最有用的证之一
点赞 评论 收藏
分享
05-28 23:26
河南大学 Java
双非本,刚学完Redis,项目只有外卖和点评,八股没准备,算法只有lqb省一,感觉敲的项目也是一言难尽没怎么吸收。怎么你们都有实习了
大牛之途:27急个锤子,你投日常实习最好的时间就是9,10月份,那时候暑期实习都结束了,正是缺人的时候。这份日常又能给你的暑期实习增加竞争力,暑期找的好了秋招也不怕了,都是环环相扣的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务