冒泡排序
void BubbleSort(int A[],int n) {
int i,j;
for(i=0; i<n-1; i++) {
bool flag=false;//表示本趟冒泡是否发生交换的标志
for(j=n-1; j>i; j--) {//一趟冒泡的过程
if(A[j-1]>A[j]) {//若为逆序
swap(A[j-1],A[j]);//交换
flag=true;
}
}
if(flag==false)//本趟遍历后没有发生交换,说明表已经有序
return;
}
}
快速排序
int Partition(int A[],int low,int high)
{
int pivot=A[low];//将表第一个元素设为中枢,对表进行划分
while(low<high)//循环跳出条件
{
while(low<high&&A[high]>=pivot)--high;
A[low]=A[high];//将比中枢小的元素移动到左端
while(low<high&&A[low]<=pivot)++low;
A[high]=A[low];//将比中枢大的元素移动到右端
}
A[low]=pivot;//中枢元素存放最终的位置
return low;//返回存放中枢的最终位置
}
void QuickSort(int A[],int low,int high)
{
if(low<high)//递归跳出的条件
{
int pivotpos=Partition(A,low,high);//划分操作
QuickSort(A,low,pivotpos-1);//对两个子表进行递归排序
QuickSort(A,pivotpos+1,high);
}
}