//
// Created by 666 on 2023/11/21.
//
#include<iostream>
using namespace std;
void print(int a[], int n)
{
for(int j= 0; j<n; j++)
{
cout<<a[j] <<" ";
}
cout<<endl;
}
void qSort(int a[], int low, int high)
{
if(low > high) // 递归出口
return;
int partition = a[low]; // 取第一个数为基准
int i = low, j = high;
while (i < j)
{
cout<<"----------"<<endl;
print(a,10);
while (i < j && partition <= a[j]) j--;
if (i < j && partition > a[j]) // 交换右边
{
a[i++] = a[j];
a[j] = partition; // 可以去掉,因为 a[j] 在下一个while结束后就会被覆盖
}
while (i < j && partition >= a[i]) i++; // 交换左边
if (i < j && partition < a[i])
{
a[j--] = a[i];
a[i] = partition; // 可以去掉,因为 a[i]在下一个while结束后就会被覆盖
}
}
// a[i] = partition; while中去掉 a[i] = partition 后需要添加这一行代码
qSort(a, low, i - 1);
qSort(a, i + 1, high);
}
int main()
{
int a[10] = {8,1,9,7,2,4,5,6,10,3};
cout<<"初始序列:";
print(a,10);
qSort(a,0,9);
cout<<"排序结果:";
print(a,10);
system("pause");
return 0;
}
快速排序复习
于 2023-11-21 17:03:16 首次发布