1. 程式人生 > >排序演算法---簡單插入排序(Simple insertion sort)

排序演算法---簡單插入排序(Simple insertion sort)

簡單插入排序是由n-1趟排序組成,簡單來說,就是假定一個長度為n的陣列,把第0位作為起始位,並認為有序(只有一個元素嘛),然後遍歷從1到n-1下標的元素,每次遍歷一個進行一次排序,直到n-1趟排序完成,這個排序的演算法複雜度最優的情況下,為O(n),最壞的情況下還是O(n的平方);

程式碼如下:

void InsertionSort(int a[])
{
    int j;
    int size=sizeof(a)/sizeof(int);
    for(int i=1;i<size;i++)
    {//預設認為第一個有序
        if(a[i]<a[i-1])
        {//這時候要交換位置
            int temp=a[i];
            for(j=i-1;j>=0 && temp<a[j];j--)
            {//符合條件,要修改值,因為插入了一個值,之前的序列會受到影響,往後推移
                a[j+1]=a[j];
            }
            //最後不滿足了,此時的位置就是要插入的位置
            a[j+1]=temp;
        }
    }
}