插入排序

伪代码:

1 INSERTITION-SORT(A)
2 for j = 2 to A.length
3     key = A[j]
4     //Insert A[j] into sorted sequence A[1..j-1].
5     i = j-1
6     while i>0 and A[i]>key
7         A[i+1] = A[j]
8         i = i-1
9     A[i+1] = key

 其中参数说一个数组A[1..n],包含长度为n的要排序的一个序列。该算法原址排序输入的数,在任何时候,最多只有其中常数个数字存储在数组外面。

性能分析:

时间复杂度:

  • 最好情况: O(n)
  • 最坏情况和平均情况: O(n2)
  • 额外空间: O(1)
  • 稳定
  • 适用情况:n小的数组

Java代码:

 1 public static void InsertSort(int arr[])
 2     {
 3         int i,j;
 4         int temp;
 5         for(j=1;j<arr.length;j++)
 6         {
 7             temp = arr[j];
 8             i = j-1;
 9             while(i>=0 && arr[i]>temp)
10             {
11                 arr[i+1] = arr[i];
12                 i--;
13             }
14             arr[i+1] = temp;
15         }
16     }

 

posted @ 2017-05-18 19:56  dear_diary  阅读(226)  评论(0编辑  收藏  举报