算法思想
快速排序之所比较快,因为相比冒泡排序,每次交换是跳跃式的。每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边。这样在每次交换的时候就不会像冒泡排序一样每次只能在相邻的数之间进行交换,交换的距离就大的多了。
代码实现
int Partition(int k[], int low, int high) {
int point;
point = k[low];
while(low < high) { //交界处返回
while(low < high && k[high] >= point) { //从右往左找到第一个比基准点小的
high--;
}
swap(k, low, high); //交换
while(low < high && k[low] <= point) { //从左往右找到第一个比基准点大的
low++;
}
swap(k, low, high); //交换
}
return low; //返回交界点
}
void QSort(int k[], int low, int high) {
int point;
if(low < point) {
point = Partition(k, low, high);
QSort(k, low, point - 1);
QSort(k, point + 1, high);
}
}
本文深入探讨了快速排序算法的高效之处,通过设置基准点,实现了数据的大跨度跳跃式交换,显著提升了排序效率。文章详细解析了快速排序的代码实现过程,包括分区函数和递归调用的细节。
18万+

被折叠的 条评论
为什么被折叠?



