#include<iostream>
using namespace std;
void qsort1(int *data,int left,int right)
{
if (left <= right)
{
int temp = data[left];
int l = left;
int r = right;
while (l < r)
{
while (l < r&&data[r] >= temp) r--;
if (l < r)
{
data[l] = data[r];
l++;
}
while (l < r&&data[l] <= temp) l++;
if (l < r)
{
data[r] = data[l];
r--;
}
}
data[l] = temp;
qsort1(data, left, l - 1);
qsort1(data, l + 1, right);
}
}
void qsort2(int *data, int left, int right)
{
if (left <= right)
{
int temp = data[left];
int l = left;
int r = right;
while (l < r)
{
while (l < r&&data[r] >= temp) r--;
while (l < r&&data[l] <= temp) l++;
if (l < r)
{
int s = data[r];
data[r] = data[l];
data[l] = s;
}
}
data[left] = data[l];
data[l] = temp;
qsort2(data, left, l - 1);
qsort2(data, l+1, right);
}
}
void main()
{
int data1[] = { 5, 6, 8, 1, 2, 5, 4, 2, 5, 5, 3, 6, 4 };
qsort1(data1, 0, 12);
for (int i = 0; i < 13; ++i)
cout << data1[i] << " ";
cout << endl;
int data2[] = { 5, 6, 8, 1, 2, 5, 4, 2, 5, 5, 3, 6, 4 };
qsort2(data2, 0, 12);
for (int i = 0; i < 13; ++i)
cout << data2[i] << " ";
cout << endl;
}
排序算法-快速排序
最新推荐文章于 2024-09-16 16:07:55 发布