排序算法概述

基本概念

什么是排序

排序是计算机内经常进行的一种操作,将杂乱无章的数据元素,通过一定的方法按关键字顺序排列的过程叫做排序。

什么是稳定性

定义

能保证两个相等的数,经过排序之后,其在序列的前后位置顺序不变。(A1=A2,排序前A1在A2前面,排序后A1还在A2前面)。

意义

稳定性本质是维持具有相同属性的数据的插入顺序,如果后面需要使用该插入顺序排序,则稳定性排序可以避免这次排序。

排序分类

内部排序和外部排序

按照是否要访问外存,排序可以分为内部排序和外部排序。

内部排序(In-place)

若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。

外部排序(Out-place)

若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。

稳定排序和不稳定排序

按照稳定性,排序可以分为稳定排序和不稳定排序。

稳定排序

假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的。

不稳定排序

假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序可能会发生变化,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,不能保证r[i]仍在r[j]之前,则称这种排序算法是不稳定的。

常见排序算法

常见的排序算法有:冒泡排序(Bubble sort)、选择排序(Selection sort)、插入排序(Insertion sort )、希尔排序(Shell's sort)、归并排序(Merge sort)、快速排序(Quick sort)、堆排序(Heap sort)、计数排序(Count sort)、桶排序(Bucket sort)、基数排序(Radix sort)。

性能总览

排序算法概述_第1张图片

记忆口诀

选泡插, 快归堆希桶计基, n 方 n老 n一三, 对 n 加 k n 乘 k,不稳稳稳不稳稳, 不稳不稳稳稳稳。

排序算法概述_第2张图片

 

你可能感兴趣的:(OI,#,排序,排序算法)