几种常用的排序方法1--插入排序
插入排序
插入排序是一种非常简单的排序方法,其算法思路是:将一个记录插入到已经排好的有序表中,从而得到一个新的,记录数加1的有序表。其实这种思想有点数学归纳法的味道,就是说 ①:如果只有一个数,那肯定是排好的;②假设{a1,a2,a3...a(i-1)}是有序的,那么将a(i+1)按照算法插入其中,也肯定是一个新的有序的数列,数列长度加1。
1 void insertion_sort_up(int a[],int n) 2 { 3 for(int j = 1; j < n; j++) 4 { 5 int key = a[j];//即将待插入的数 6 int i = j - 1; 7 while(i >= 0&&a[i] > key) 8 { 9 a[i+1] = a[i]; //后移一位 10 i = i - 1; 11 } 12 a[i+1] = key; //将数填入空当中 13 } 14 }
ps:①插入排序还有很多变种,这里不再说了。
②平均来说插入排序算法的时间复杂度为O(n^2)。