注意:快速排序的第二次扫描R[i].key <= tmp.key,而不是R[i].key < tmp.key,不然可能陷入i!=j永远不成立的循环
冒泡排序
void BubbleSort(SqList R[],int n) {
int i,j,exchange;
SqList tmp;
for(i=0; i<n-1; i++) {
exchange=0;
for(j=n-1; j>i; j--)
if(R[j].key<R[j-1].key) {
tmp=R[j];
R[j]=R[j-1];
R[j-1]=tmp;
exchange=1;
}
if(exchange==0)
return;
}
}
快速排序
void QuickSort(SqList R[],int s,int t) {
int i=s,j=t;
SqList tmp;
if(s<t) {
tmp=R[s];
while(i!=j) {
while(j>i && R[j].key>tmp.key)
j--;
R[i]=R[j];
while(i<j && R[i].key<=tmp.key)
i++;
R[j]=R[i];
}
R[i]=tmp;
QuickSort(R,s,i-1);
QuickSort(R,i+1,t);
}
}
暂无评论