排序 從直接插入排序到希爾排序

2021-06-07 17:29:03 字數 742 閱讀 7222

直接插入排序

有n個資料,取第2個數與第1個數比較,使這2個數有序;

取第3個數,與前2個數比較,使這3個數有序;

取第n資料,與前n-1個數比較,使這n個數有序。

/*

摘要:採用插入排序,對進行排序

完成日期:2012-7-13 11:04

版本:1.1v

*/#include void printlist(int a, int n);

void insertsort(int a, int n);

int main()

; int n = 11;

printf("原序列:\n");

printlist(a, n);

insertsort(a, n);

printf("插入排序後:\n");

printlist(a, n);

return 0;}/*

功能:直接插入

輸入:int list, int n

輸出:無

函式呼叫:無

*/void insertsort(int a, int n)

}}}/*

功能:輸出陣列

輸入:int list, int n

輸出:無

函式呼叫:無

*/void printlist(int list, int n)

printf("\n");

}

直接插入排序 希爾排序

一.直接插入排序 原理 將陣列分為無序區和有序區兩個區,然後不斷將無序區的第乙個元素按大小順序插入到有序區中去,最終將所有無序區元素都移動到有序區完成排序。最優複雜度 當輸入陣列就是排好序的時候,複雜度為o n 而快速排序在這種情況下會產生o n 2 的複雜度。最差複雜度 當輸入陣列為倒序時,複雜度...

直接插入排序 希爾排序

1.直接插入排序 時間複雜度o n2 工作原理 通過構建有序序列,對於未排序資料,在已排序的序列中,從後向前掃瞄,找到相應的位置並插入。插入排序在實現上,在從後向前掃瞄的過程中,需要反覆把已排序元素逐步向後移動,為最新元素提供插入空間。直接插入排序 public static void insert...

插入排序(直接插入排序 希爾排序)

直接插入排序 基本思想 假設待排序的數存放在陣列arr 1.n 中。初始時,arr 1 自成1個有序區,無序區為arr 2.n 從i 2起直至i n為止,依次將arr i 插入當前的有序區arr 1.i 1 中,生成含n個記錄的有序區。演算法複雜度 對於具有n個記錄的檔案,要進行n 1次排序 各種狀...