排序算法有很多种,本文主要介绍基本的排序算法和实现,并分析复杂度和稳定性。
一、Ο(n2)的算法
1、插入排序
插入排序十分好理解,在无序的数组中选择一个数值,插入到有序的数组当中,这个过程是稳定的。实现代码如下:
1 template <typename T> 2 void InsertionSort(vector<T> &arr){ 3 int i, j; 4 for (i = 1; i < arr.size(); i++) { 5 int temp = arr[i]; 6 for (j = i - 1; j >= 0 && arr[j] > temp; j--) 7 arr[j + 1] = arr[j]; 8 arr[j + 1] = temp; 9 }