1. 冒泡排序
void BubbleSort(SqList &L){
int n = L.length - 1;
bool flag = 1; //标记是否交换过
while(n > 0 && flag){
flag = 0;
for(int i = 1; i <= n; i++){
if(L.r[i].key > L.r[i+1].key){ //如果存在逆序则交换
flag = 1;
t = L.r[i];
L.r[i] = L.r[i+1];
L.r[i+1] = t;
}
}
--n; //每一次排序过程中确定最大的数
}
}
算法执行过程
2. 快速排序
void Partion(SqList &L, int low, int high){
L.r[0] = L.r[low]; //第一个关键字作为支点
pivotkey = L.r[low].key;
while(low < high){
while(low < high && L.r[high].key >= pivotkey) --high;
L.r[low] = L.r[high];
while(low < high && L.r[low].key <= pivotkey) ++low;
L.r[high] = L.r[low];
}
L.r[low] = L.r[0];
}
void QSort(SqList &L,int low,int high){
pivoitkey = Partion(L,low,high);
Qsort(L,low,pivotekey - 1);
QSort(L,pivotekey + 1,high);
}
void QuickSort(SqList &L){
QSort(L,1,L.length);
}