Algorithm backup ---- Insertion Sort(插入排序算法)

  Insertion sort is a simple sorting algorithm, a comparison sort in which the sorted array (or list) is built one entry at a time. It is much less efficient on large lists than more advanced algorithms such as quicksort,heapsort or merge sort. However, insertion sort provides several advantages:

  1. simple implementation

  2. efficient for (quite) small data sets

  3. adaptive, i.e. efficient for data sets that are already substantially sorted: the time compexity is O(n + d), where d is the number of inversions

  4. more efficient in practice than most other simple quadratic (i.e. O(n2)) algorithms such as selection sort or  bubble sort: the average running time is n2/4, and the running time is linear in the best case

  5. stable, i.e. does not change the relative order of elements with equal keys

  6. in-place, i.e. only requires a constant amount O(1) of additional memory space

  7. online, i.e. can sort a list as it receives it.

  Below is the implementation using C#:

/// <summary>
/// Insertion sort algorithm
/// </summary>
/// <param name="numbers">numbers array to be sorted</param>
public static void InsertionSort(int[] numbers)
{
    
for (int i = 1; i < numbers.Length; ++i)
    {
        
int temp = numbers[i];
        
int j = i;
        
//Find its place and insert.
        while (j > 0 && numbers[j - 1>= temp)
        {
            numbers[j] 
= numbers[j - 1];
            j
--;
        }
        numbers[j] 
= temp;
    }
}

 

Go to my home page for more posts

posted on 2009-11-03 16:21  lantionzy  阅读(295)  评论(0编辑  收藏  举报