#include <iostream>
using namespace std;
int KuaiPai(int a[], int l, int r);
void quicksort(int a[], int l, int r);
void print(int a[],int i);
int flag = 0;
void print(int a[],int i)
{
cout << "第" << flag << "次排序:" << endl;
for (int j = 0; j < 8; j++)
{
cout << a[j]<< "\t";
}
cout << endl;
for (int j = 0; j < 8; j++)
{
if (i == j)
{
cout << "!" << "\t";
continue;
}
cout << "" << "\t";
}
cout << endl;
}
void quicksort(int a[], int l, int r)
{
if (l > r)
return;
int i = KuaiPai(a, l, r);
quicksort(a, l, i-1);
quicksort(a, i + 1, r);
}
int KuaiPai(int a[],int l,int r)//从小到大排序
{
flag++;
int temp = a[l];
int i = l, j = r;
while (true)
{
while (a[i] <=temp&&i<r)
i++;
while (a[j] >=temp&&j>l)
j--;
if (i >= j)
break;
swap(a[i], a[j]);
}
a[l] = a[j];
a[j] = temp;
print(a, j);
return j;
}
int main()
{
int a[] = { 2,5,1,7,3,9,10,3 };
cout << "原始数据:" << endl;
for (int i = 0; i < 8; i++)
{
cout << a[i] << "\t";
}
cout << endl;
quicksort(a, 0, 7);
cout << "最终结果:" << endl;
for (int i = 0; i < 8; i++)
{
cout << a[i] << "\t";
}
}
快速排序分治递归
最新推荐文章于 2024-06-15 18:06:06 发布