二
解
void InsertSort(SeqList R)
{ file://對 順序表中記錄R[
int i
for(i=n
if(R[i]
{
R[n]=R[i];j=i+
do{ file://從 左向右在有序區中查找插入位置
R[j
j++;
}while(R[j]
R[j
}//endif
}//InsertSort
解
#define int KeyType file://且 定義KeyType 為int型的吧
typedef struct node{
KeyType key; file://關 鍵字域
OtherInfoType info; file://其 它信息域
struct node * next; file://鏈 表中指針域
}RecNode; file://記 錄結點類型
typedef RecNode * RecList ; file://單 鏈表用RecList表示
file://下 面就是排序算法
void InsertSort(RecList R)
{ file://鏈 式存儲結構的直接插入排序算法
file://R 是帶頭結點的單鏈表
RecNode *p
s=R
t=R; file://t 指向頭結點
p=R
q=P
while( q ) file://當 q為空時表示已經訪問完畢所有結點
{
if(p
{
while (s
{ file://從 頭向右逐個比較直到p結點
t=s; file://記 下s結點位置
s=s
}//比較結束
t
P
q
q=p
S=R
t=R;
}//endif
else file://此 時沒有插入操作
{p=p
}//endwhile
}//InsertSort
解
void ReSort(SeqList R)
{
file://重 排數組
int i=
while (i file://i
{ while(i<
i++;
R[
while(i=
j
R[i++]=R[j];R[j
}//endwhile
}//ReSort
本算法在任何情況下的比較次數均為n(每個元素和
*
解
void BubbleSort(SeqList R)
{ file://R [
int i
Boolean exchange; file://交 換標記
for(i=
{
exchange=FLASE;
for(j=n
{
if(R[j+
{
R[
R[j+
R[j]=R[
exchange=TURE; file://交 換後標記為真
}
if (!exchange) return; file://本 趟排序未發生交換
}//endfor
exchange=FLASE; file://重 新設置標記
for(k=i+
{
if(R[k+
{
R[
R[k+
R[k]=R[
exchange=TURE; file://交 換後標記為真
}
if(!exchange) return; file://本 趟未發生交換
}//endfor
}//endfor
}//BubbleSort
void BubbleSort(int A[]
//不妨設A[
int lastExchange
while (i>
lastExchange=
for(j=
if([j+
交換A[j]和A[j+
lastExchange=j;
}
i=lastExchange;//將i置為最後交換的位置
}//endwhile
}//BubbleSort
解
void BubbleSort(int A[]
file://不 妨設A[
int lastExchange
while (i file://這 一條很重要
lastExchange=n;
for(j=n
if([j
交換A[j]和A[j
lastExchange=j;
}
i=lastExchange;//將i置為最後交換的位置
}//endwhile
}//BubbleSort
解
void QuickSort(SeqList R
{ file://對 R[low
int pivotpos;
if(high
{ file://則 進行直接插入排序
InsertSort(R
}
else
{
pivotpos=midPartion(R
QuickSort(R
QuickSort(R
}
}//QuickSort
int midPartion(SeqList R
{ file://三 者取中規則定基准
if(R[(i+j)/
{ 交換R[(i+j)/
if(R[i]
{ 交換R[i]和R[j];}
if(R[i]
{ 交換R[i]和R[(i+j)/
file://以 上三個if語句就使區間的第一個記錄的key值為三個key的中間值
return Partion(R
}
順便提一下
另外
(答案及點評)
(答案及點評)
From:http://tw.wingwit.com/Article/program/sjjg/201311/23626.html