排序常用算法代码示例

插入排序

  • 直接插入排序
    假设待排序的数据存放在R[0…..n-1],排序过程的某一中间时刻,R被划分成两个子区间R[0…i-1]和R[i…n-1],其中,前一个子区间是已排好序的有序区;后一个子区间则是当前未排序的部分,。直接插入排序的基本操作是将当前无序区的i号元素R[i]插入到有序区R[0…i-1]中适当位置上;(时间复杂度O(n^2),稳定排序)

直接插入排序

  • 希尔排序
    希尔排序又称为缩小增量排序方法,其基本思想是:把记录按下标的一定增量d分组,对每组记录采用直接插入排序方法进行排序,随着增量逐渐减小,所分成的组包含的记录越来越多,到增量的值减小到1时,整个数据合成一组,则完成排序。(O(n^1.3),不稳定排序)

希尔排序

交换排序

  • 冒泡排序
    冒泡排序的基本思想:设想被排序的数组R[0…n-1]垂直排列,将每个元素R[i]看作是重量为R[i]的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R,凡扫描到违反本原则的轻气泡,就使其向上“漂浮”(两者进行交换),如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下。(O(n^2),稳定排序)

冒泡排序

  • 快速排序
    快速排序是由冒泡排序改进而得到的,它的基本思想是:在待排序的n个记录中任取一个记录(通常取第一个记录),把该记录放入最终位置后,整个数据区间被此记录分割成两个子区间。所有关键字比该记录关键字小的放置在前子区间,所有比它大的放置在后子区间,并把该记录排在这两个子区间的中间,这个过程称为一趟快速排序,之后重复上述步骤(O(nlogn,不稳定的排序))

快速排序

选择排序

  • 直接选择排序

简单选择排序基本思想是:第i趟排序开始时,当前的有序区和无序区分别为R[0…i-1]和R[i…n-1](0<=i<=n-2),它们与直接插入排序法中的有序区和无序区的概念相同。该趟排序是从当前无序区中选出最小的元素R[k],将它与无序区的i号元素R[i]交换,使R[0…i]和R[i+1…n-1]分别变为新的有序区和无序区(O(n^2),不稳定排序)

直接选择排序

热评文章