資料結構實驗考試(希爾排序)
希爾排序具體**:
#includeint count=0;
void shellsort(int a,int st,int ed)while(j>=st&&a[j]>=temp);
a[j+step]=temp;
}} if(step==1) }}
int main()
; int len=9,i;
printf("待排順序為:\n\n");
for(i=0;i
待排列的順序為:
64 , 87 , 13 , 47 , 25 , 2 , 4 , 16 , 32
共9個元素
希爾排序的演算法實現:
利用步長 跨步劃分 多塊區域,對每一塊區域進行插入排序。
步長每一次變化:step=step/3+1;
step = 向下取整( step 除3)+ 1
當step =1 時相當於對所有元素進行一遍 插入排序。
完成排序即可跳出。
注意:如果是相同元素(值相同),如果被劃分到不同的區域可能會發生順序的變化。
所以這個排序演算法是不穩定的。
實現的複雜度目前還沒有證明出來。
資料結構實驗之排序六 希爾排序
time limit 1000ms memory limit 65536k 有疑問?點這裡 我們已經學習了各種排序方法,知道在不同的情況下要選擇不同的排序演算法,以期達到最好的排序效率 對於待排序資料來說,若資料基本有序且記錄較少時,直接插入排序的效率是非常好的,希爾排序就是針對一組基本有序的少量資...
資料結構實驗之排序六 希爾排序
我們已經學習了各種排序方法,知道在不同的情況下要選擇不同的排序演算法,以期達到最好的排序效率 對於待排序資料來說,若資料基本有序且記錄較少時,直接插入排序的效率是非常好的,希爾排序就是針對一組基本有序的少量資料記錄進行排序的高效演算法。你的任務是對於給定的資料進行希爾排序,其中增量dk n 2 k ...
資料結構實驗之排序六 希爾排序
我們已經學習了各種排序方法,知道在不同的情況下要選擇不同的排序演算法,以期達到最好的排序效率 對於待排序資料來說,若資料基本有序且記錄較少時,直接插入排序的效率是非常好的,希爾排序就是針對一組基本有序的少量資料記錄進行排序的高效演算法。你的任務是對於給定的資料進行希爾排序,其中增量dk n 2 k ...