#include<iostream>
#include<vector>
using namespace std;
void quicksort(vector<int> &v,int low,int hight)
{
if (low >= hight)
{
return;
}
int i = low; int j = hight; int index = v[i];
while (i < j)
{
while(i<j&&v[j] > index) //i位置为坑,从j开始往左找到比index小的位置;
{
j--;
}
if (i<j)
{
v[i++] = v[j];//将找到的位置 元素填入 i位置,补齐坑。 此时j的位置为坑
}
while (i<j&&v[i]<index) // j位置为坑,从i开始往右找到比index大的位置;
{
i++;
}
if (i<j)
{
v[j--] = v[i];
}
}
v[i] = index;//当i=j时 将基准值 index 赋值给最后的坑
quicksort(v, low, i - 1); /// 递归调用,分治
quicksort(v, i + 1, hight);/// 递归调用,分治
}
//主程序
int main()
{
vector<int>v;
for (int i = 0; i < 10; i++)//生成随机数列
{
int j = i+rand()%40;
v.push_back(j);
}
quicksort(v, 0, v.size()-1);
for (vector<int>::iterator it = v.begin(); it!= v.end(); it++)//迭代器遍历输出
{
cout << *it << endl;
}
system("pause");
return 0;
}
快排算法实现
最新推荐文章于 2024-09-18 18:05:43 发布