Insertion Sort

  • 原理 : 將資料逐一插入以排序好的序列中
  • Algo : 
    •     for i <- 2 to n do

              將a[i] 插入 a[1] ~ a[i-1] 之間適當的位置,使a[1]~a[i]排好

  • #include <stdio.h>
    
    #define SIZE 8
    
    void sort(int array[], int size)
    {
        // TODO: sort array using insertion sort
        void insert(int m, int e) {
                while( m>=0 && array[m]>e ) {
                    array[m+1] = array[m]; m--;
                }
                array[m+1] = e;
        }
        int i;
        for ( i = 1; i <= size-1 ; i++) insert( i-1, array[i]);
    }
    
    int main(void)
    {
        int numbers[SIZE] ={ 4, 15, 16, 50, 8, 23, 42, 108 };
        for (int i = 0; i < SIZE; i++)
        {
            printf("%i ", numbers[i]);
        }
        printf("\n");
        sort(numbers, SIZE);
        for (int i = 0; i < SIZE; i++)
        {
            printf("%i ", numbers[i]);
        }
        printf("\n");
        return 0;
    }

    http://ideone.com/xH7fpG

 

posted @ 2016-02-29 18:05  jeremyatchina  阅读(164)  评论(0编辑  收藏  举报