插入排序

 

排序思路:插入排序,即插入有序队列。在遍历有序队列,当遍历到的数据和带排序的数据相等,或者刚好比带排序大 ,此时插入带排序的数据,插入后自然还是有序队列。

如:{12,1,12,3,4}。排序过程如下,红色为找到因该插入的位置。橙色为已经排好序的部分。

  1. 初始的时候,假设有序队列为{12}
  2. 当第一次排序的时候,“1” 需要找到自己插入的位置,即和{12}比较,插入到12前面,有序队列为{1,12}
  3. 当第二次排序的时候,“12” 需要在{1,12}找到需要插入的位置,即插入到12的前面{1,12,12}
  4. 当第三次排序的时候,“3”需要在{1,12,12}中找到需要插入的为,即插入到12前面{1,3,12,12}
  5. 当第四次排序的时候,“4”需要在{1,2,12,12}找到需要插入的位置,即插入到12前面{1,3,4,12,12}

 

 每次寻找插入位置的时间为O(N),寻找次数N。所以时间复杂度为:O(N*N)。该算法是稳定的排序算法。

 1 C++ 2 #include <iostream>
 3 using namespace std;
 4 namespace mySort
 5 {
 6          voidinsertSort(int * ar, int len)
 7          {
 8                    inttemp = -1;
 9                    for(int i = 0; i < len - 1; ++i)
10                    {
11                             intj = i + 1;
12                             temp= ar[j];
13                             while(j>0)
14                             {
15                                      if(temp < ar[j - 1])
16                                      {
17                                                ar[j]= ar[j - 1];
18                                                --j;
19                                      }
20                                      else
21                                                break;
22                             }
23                             ar[j]= temp;
24                    }
25          }
26 };

 

 



 

posted @ 2014-08-09 20:54  旧客图新  阅读(203)  评论(0编辑  收藏  举报