下屬專案
測試用例數量
插入排序無1
希爾排序無1
插入排序的關鍵在於:
當前元素(比如第1個元素是當前元素)前面的序列(比如第0個元素構成的序列)都是有序的,再把當前元素(第1個元素)插入到這個有序序列(第0個元素構成的序列)中,於是形成多了乙個元素的有序序列(即第0個、第1個元素構成的有序序列)
#include
#include
void
insertsort
(int
*a,int n)
//插入排序
a[j]
= tmp;
}printf
("move times:%d\n"
, time);}
void
main()
;insertsort
(a,10);
for(
int i =
0; i <
10; i++
)printf
("%d "
, a[i]);
system
("pause");
}
在**的insertsort()函式體中,我加入了乙個time的變數來計數元素移動的次數。
#include
#include
void
shellsort
(int
*a,int size)
//希爾排序
a[j]
= tmp;}}
while
(gap >1)
;printf
("move times:%d\n"
, time);}
void
main()
;shellsort
(a,10);
for(
int i =
0; i <
10; i++
)printf
("%d "
, a[i]);
system
("pause");
}
執行以上程式,可以看到希爾排序交換的次數更少,或者說其時間複雜度降下來了。1
如果本文對你有幫助,不如請我一罐可樂吧 ?
插入排序
希爾排序
程式基於王保明先生的講課內容. ↩︎
插入排序和希爾排序c
將位置i處的元素放到0和i之間的合適位置 includeusing namespace std void swap int a,int i,int j void selectsort int a,int len a j tmp 時間複雜度 o n 2 空間複雜度 o n 2 但是在陣列基本有序的情況...
希爾排序 與插入排序 C語言
希爾排序 shell sort 是插入排序的一種。是針對直接插入排序演算法的改進。該方法又稱縮小增量排序,希爾排序基本思想 先取乙個小於n的整數d1作為第乙個增量,把檔案的全部記錄分成d1個組。所有距離為dl的倍數的記錄放在同乙個組中。先在各組內進行直接插入排序 然後,取第二個增量d2shellso...
插入排序和希爾排序
插入排序的基本操作就是將乙個資料插入到已經排好序的有序資料中,從而得到乙個新的 個數加一的有序資料,演算法適用於少量資料的排序,插入排序的基本思想是 每步將乙個待排序的紀錄,按其關鍵碼值的大小插入前面已經排序的檔案中適當位置上,直到全部插入完為止。public static void sortins...