#include <iostream>
#include <vector>
#include <conio.h>
using namespace std;
/*
交换两个数
*/
void exchange(int &x, int &y)
{
int temp = x;
x = y;
y = temp;
}
/*
将数组data中的[left, right]中的数据以data[right]为界划分为左右两部分
*/
int partion(vector<int> &data, int left, int right)
{
//current用来标识第一个大于data[right]的数据位置
int current = left;
//循环data中的数据,若小于data[right],则交换到左边
for (int i = left; i < right; i++)
{
if (data[i] < data[right])
{
exchange(data[i], data[current]);
current++;
}
}
//最后,将data[current]交换到分界点
exchange(data[right], data[current]);
return current;
}
/*
快速排序算法
*/
void quick_sort(vector<int> &data, int left, int right)
{
if (left < right)
{
int middle = partion(data, left, right);
quick_sort(data, left, middle - 1);
quick_sort(data, middle + 1, right);
}
}
int main()
{
vector<int> data;
int temp = 0;
while(cin >> temp)
{
data.push_back(temp);
}
/*int current = partion(data, 0, data.size() - 1);
cout << current << endl;*/
quick_sort(data, 0, data.size() - 1);
for (vector<int>::iterator iter = data.begin(); iter != data.end(); iter++)
{
cout << *iter;
cout << " ";
}
getch();
return 0;
}
快速排序_quick_sort
最新推荐文章于 2024-06-09 20:06:31 发布