几种常用的排序方法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)。

posted @ 2012-11-20 22:33  缓冲区溢出  阅读(201)  评论(0编辑  收藏  举报