冒泡排序
https://blog.youkuaiyun.com/m0_43450897/article/details/106576710
快速排序
快速排序是对冒泡排序的一种改进。首先设定一个分界值,通过该分界值将数组分成左右两部分。右边是大于或等于分界值的数据,左边是小于分界值的数据。然后,对左边和右边的数据进行独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据又分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理。重复上述过程,这样通过递归将左侧部分排好序后,再递归排好右侧部分的顺序。当左、右两个部分各数据排序完成后,整个数组的排序也就完成了。
int Partition(SqList &L, int low, int high)//一次划分排序
{
T pk = L[low];
while(low < high)
{
while(low<high && L[high]>=pk)
high--;
L[low] = L[high];
while(low<high && L[low]<pk)
low++;
L[high] = L[low];
}
L[low] = pk;
return low;
}
void QuickSort(SqList &L, int low, int high)
{
if(low < high)
{
int pkloc = Partition(L,low,high);
QuickSort(L,low,pkloc-1);
QuickSort(L,pkloc+1,high);
}
}