一、基本概念
排序,即将原本无序的一个序列重新排列成为有序的序列。
排序算法的稳定性,即待排序的序列中有两个或者两个以上的相同的项,在排序前和排序后的相对位置有没有发生变化。如果没有发生变化,那么就是稳定的;反之,则不稳定。
排序算法的复杂性,即算法效率的度量,是评价算法优劣的重要依据。一个算法的复杂性的高低体现在运行该算法所需要的计算机资源的多少上面,所需的资源越多,我们就说该算法的复杂性越高;反之,则该算法的复杂性越低。
时间复杂度,衡量算法运行时间的函数,一般表示为 O(n)。
空间复杂度,衡量算法运行时所需要的内存空间大小,一般表示为 O(n) 或者 S(n)。
二、排序分类
排序算法的种类有很多,一般来说,分为如下五类:
1.插入排序
直接插入排序 Insert Sort
二分插入排序 Binary Sort
希尔排序 Shell Sort
2.交换排序
冒泡排序 Bubble Sort
快速排序 Quick Sort
3.选择排序
简单选择排序 Selection Sort
堆排序 Heap Sort
4.归并排序 Merge Sort
5.基数排序 Radix Sort
三、时间复杂度和空间复杂度