排序算法——插入排序(C語言實現)

  原理算法

默認數組的第一個數據是有個有序數組,因爲只有一個數據,確定是有序隊列。從亂序數組的第二個位置開始,與以前的有序數組中的數據依次做比較,找到合適的位置將該數據插入有序數組,直到將最後一個數據插入有序數組中,排序結束。數組

  分析ide

因爲在最壞的狀況下,有序數組中的數據在每次插入操做時,都會被比較一次,因此在最壞的狀況下,該排序算法的時間複雜度爲On2);在最好的狀況下,數據基本有序,其時間複雜度爲On);因爲其在原數組上操做,因此空間複雜度爲O1)。spa

  改進orm

將某個數字插入有序數組的時候,能夠採用二分法查找該數字的合適插入位置。排序

C語言實現(原始插入排序)隊列

void swap(void *a, void *b, int size)
{
    void *tmp = Malloc(size);
    memcpy(tmp, a, size);
    memcpy(a, b, size);
    memcpy(b, tmp, size);
    free(tmp);
}
Boolean insert(int *arr, int arrlen)
{
    int i = 0, j = 0;

    if(NULL == arr || 0 >= arrlen){
        printf("Invalid input...\n");
        return FALSE;
    }
    
    for(i = 1; i < arrlen; ++i){
        for(j = i - 1; j>=0; --j){
            if(arr[j+1] < arr[j]){   
                swap(arr+j+1, arr+j, sizeof(arr[i]));
            }
        }        
    }
    return TRUE;
}
相關文章
相關標籤/搜索