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,直到找到已排序的元素小於或者等於新元素的位置 將新...