C語言排序演算法

2021-09-26 01:25:12 字數 2239 閱讀 9523

void

insertsort

(sqlist &l)

//if

}

void

binertsort

(sqlist &l)

//while

for(j=i-

1;j>=high+1;

--j)

l.r[j+1]

=l.r[j]

;//記錄後移

l.r[high+1]

=l.r[0];

//將r[0]即原r[i],插入到正確位置

}//for

}

void

shellinsert

(sqlist &

l,int dk)

//if

}void

shellsort

(sqlist &

l,int dt[

],int t)

void

bubblesort

(sqlist &l)

//if

--m;

}//while

}//bubblesort

int partition

(sqlist &

l,int low,int high)

//while

l.r[low]=l

.r[0];

//樞軸記錄到位

return low;

//返回樞軸位置

}void

qsort

(sqlist &

l,int low,int high)

}void

quicksort

(sqlist &l)

void

selectsort

(sqlist &l)

//for

}}

1.調整堆

void

heapadjust

(sqlist &

l,int s,int m)

//for

l.r[s]

=rc;

//插入

}

2.建初堆

void

greatheap

(sqlist &l)

3.堆排序

void

heapsort

(sqlist &l)

//for

}

1.相鄰兩個有序子串行的歸併

void

merge

(redtype r

,redtype t

,int low,int mid,int high)

//while

while

(i<=mid)

r[k++]=

r[i++];

//將剩餘的r[i..mid]複製到t中

while(j

<=high)

t[k++]=

r[j++];

//將剩餘的r[j..mid]複製到t中

}

2.歸併排序

void

msort

(redtype r

,redtype t

,int low,int high)

//else

}void

mergesort

(sqlist &l)

void

distribute

(slcell &r,int i,arrtype &f,arrtype &e)

//for

}void

collect

(slcell &r,int i,arrtype f,arrtype e)

//while

r[t]

.next=0;

//t所指向最後乙個非空子集中的最後乙個結點

}void

radixsort

(sllist &l)

//for

}

c語言排序演算法

很多朋友是以譚浩強老師編的 c語言教程 作為學習 c語言的入門教程的。書中涉及排序問題一般都以 冒泡法 和 選擇法 實現。為了擴大視野,增加學習程式設計的興趣,我參閱了有關書籍,整理了幾種排序法,寫出來同大家共勉。高手們不要笑,這篇文章是寫給出學者的,而且我自己也是只菜鳥,雖然內容陳舊,但值得初學者...

c語言排序演算法

c語言排序演算法 非穩定的排序演算法 選擇排序 快速排序 希爾排序 堆排序 穩定的排序演算法 氣泡排序 插入排序 歸併排序和基數排序是穩定的排序演算法。讓我們先定義乙個整型陣列a n 下面用五種方法對其從小到大排序。1 冒泡法 冒泡法大家都較熟悉。其原理為從a 0 開始,依次將其和後面的元素比較,若...

C語言排序演算法

1.插入排序 一般來說,插入排序都採用in place在陣列上實現。具體演算法描述如下 從第乙個元素開始,該元素可以認為已經被排序 取出下乙個元素,在已經排序的元素序列中從後向前掃瞄 如果該元素 已排序 大於新元素,將該元素移到下一位置 重複步驟3,直到找到已排序的元素小於或者等於新元素的位置 將新...