代码改变世界

排序 :插入排序

2013-03-03 19:48  gitenius  阅读(221)  评论(0)    收藏  举报

插入排序的基本概念:将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据。

一:时间复杂度

最好情况下:序列升序排序,需进行(n-1)次比较

最坏情况下:序列是降序排列,需进行n*(n-1)/2次比较

因此,选择排序总的时间复杂度:O(n*n),

故不适合对于数据量比较大的排序应用,一般用于少量元素的排序(通常为8个或以下)。

二:算法稳定性

选择排序具有稳定性。

三:示例代码

   1:      public class InsertSortLib
   2:      {
   3:          public int[] Sort(int[] arr)
   4:          {
   5:              for (int outer = 0; outer < arr.Count(); outer++)
   6:              {
   7:                  var temp = arr[outer];
   8:                  var inner = outer;
   9:   
  10:                  while (inner > 0 && arr[inner - 1] > temp)
  11:                  {
  12:                      arr[inner] = arr[inner - 1];
  13:                      inner -= 1;
  14:                  }
  15:   
  16:                  arr[inner] = temp;
  17:              }
  18:              return arr;
  19:          }
  20:      }