关闭

排序算法重要知识点

标签: 排序算法归并排序希尔排序快速排序
360人阅读 评论(0) 收藏 举报
分类:

经典排序算法及特性:

这里写图片描述

经典排序算法的空间复杂度:
O(1):冒泡、选择、插入、堆、希尔排序
O(logN)~O(N):快速排序
O(N):归并排序
O(M):计数排序、基数排序

经典排序算法的稳定性:
  稳定性概念:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。

稳定的排序:冒泡、插入、归并、计数、基数、桶排序
不稳定的排序:选择、快排、堆、希尔排序

一、时间复杂度为O(N^2)的算法有:冒泡排序、选择排序、插入排序;

1.冒泡排序:
  第一个数与第二个数比较,大的放后面;第二个数与第三个数,第三个数与第四个数……依次比较,这样一来最大数放在最后。前n-1个数重复上述过程即可得到有序数组。

这里写图片描述

2.选择排序:
  在n个数中选出最小的数放在第一个位置,剩下n-1个数选出最小的数放在第二个位置,依次排序。
  或者,找出最大的一个元素,和末尾的元素交换,然后再从头开始,查找第1个到第N-1个元素中最大的一个,和第N-1个元素交换……其实差不多就是冒泡法的思想,但整个过程中需要移动的元素比冒泡法要少,因此性能是比冒泡法优秀的

3.插入排序

http://pic002.cnblogs.com/img/yc_sunniwell/201006/2010062815150025.png

二、时间复杂度为O(nlogn)的算法有:归并排序、快速排序、堆排序、希尔排序;

1.归并排序:  
  第一个数和第二个数,第三个数和第四个数……两两归并、排序,再把相邻的有序区间合并、排序,依次重复进行。

2.快速排序:
  随机选择一个数(例如最后一个数),比它小的放左边,比它大的放右边,左右两部分分别递归排序。

这里写图片描述

3.堆排序

这里写图片描述

  首先建立大小为n的大根堆,堆顶元素(即最大值)与最后一个元素交换,将其脱离大根堆存入有序数组;剩下部分进行大根堆调整后依次拿出堆顶最大值,存入有序数组即可。

4.希尔排序
希尔排序(Shell Sort)是插入排序的一种改良排序算法。关键在于步长的选择。
如图选择步长为4的数比较->步长为3比较->步长为2比较->最终步长为1比较结束。

这里写图片描述

三、时间复杂度为O(n)的算法有:计数排序、基数排序;

不是基于比较的排序算法,思想来自于桶排序。

1.计数排序

将各元素放入排好序的桶中,拿出后即排好序。

2.基数排序

这里写图片描述

先按个位数放入桶中排序,拿出序列;再分别按十位、百位放入桶中排序

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:91171次
    • 积分:2102
    • 等级:
    • 排名:第18864名
    • 原创:92篇
    • 转载:1篇
    • 译文:3篇
    • 评论:20条
    最新评论