快速排序 希爾排序(shell)

2021-06-24 11:13:50 字數 436 閱讀 8600

//快速排序
void quicksort3(int a,int left,int right)

for(j=j-1;j>left;j--)

if(i

//shell排序

//shell排序

void shellsort(int arr,int n)

{ int j,temp;

for(int gap=n/2;gap>0;gap/=2)

{for(int i=gap;i=0&&temp

每一輪中比較相鄰步長的兩個陣列元素大小,以排成非遞減序列為例,若a[i]>a[j] (i+gap=j),則將a[i]暫時儲存在temp中,向前以當前gap為步長搜尋,將所有大於temp的元素依序向後移gap,騰出位置,直到找到小於temp的元素a[x],將temp插入到a[x+gap]中;

希爾(Shell)排序

希爾 shell 排序 2 平方級時間複雜度,但當然也沒有線性排序演算法的o n 級的線性時間複雜度,對於大型資料輸入,線性演算法肯定是最佳的選擇,但對於中規模資料而言,希爾排序無疑是最佳的選擇。演算法大師knuth在他的著作 計算機程式設計藝術 給出的希爾排序的平均時間複雜度為o n 1.3 介於...

希爾shell排序

include include include typedef int type define n 100000 void exchange type a,int a,int b void selectionsort type a,int n void insertionsort type a,in...

希爾排序 Shell

希爾排序的實質就是分組插入排序,該方法又稱縮小增量排序。該方法的基本思想是 先將整個待排元素序列分割成若干個子串行 由相隔某個 增量 的元素組成的 分別進行直接插入排序,然後依次縮減增量再進行排序,待整個序列中的元素基本有序 增量足夠小 時,再對全體元素進行一次直接插入排序。因為直接插入排序在元素基...