#include<iostream>
using namespace std;
int a[100]; int n;
int main()
{
void quicksort(int left, int right);
//快速排序法
cin >> n;
for (int i =0 ; i < n; i++)
{
cin >> a[i];
}
quicksort(0, n-1);
for (int i = 0; i < n; i++)
{
cout << a[i] << " ";
}
return 0;
}
void quicksort(int left, int right)
{
int i, j, t, temp;
if (left > right)
{
return;
}
temp = a[left];//将最左边的数作为基准数
i = left;
j = right;
while(i!=j)
{//因为基准数在最左边,所以应从右边往左边
while (a[j] >= temp && i<j)//要找比基准数小的数
{
j--;
}
while (a[i] <= temp && i < j)//比基准数大的数
{
i++;
}
if (i < j)//i与j没有相遇
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
/* temp = a[left];*/
a[left] = a[i];
a[i] = temp;
//以基准数为分界点分成2段,下面利用递归
quicksort(left, i - 1);//处理左边,基准数就为left
quicksort(i + 1, right);//处理右边基准数就为right
}
快速排序法c++
最新推荐文章于 2024-08-24 14:01:36 发布