本文主要是介绍C++ 快排第二种,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#include<iostream>
#include<vector>
using namespace std;
void quickSort(vector<int> &s, int l, int r)
{
if (l<r)
{
int low = l; //左边第一个,因为第一个已经用pivot保存了
int high = r; //右边
int pivot = s[l]; //第一个,已被保存
while (low<high) //当左小于右,当相等的时候会跳出循环
{
while (low<high&&s[high] >= pivot) // 从右向左找第一个小于x的数
high--;
if (low<high)
s[low++] = s[high];
while (low<high&&s[low]<pivot) // 从左向右找第一个大于等于x的数
low++;
if (low<high)
s[high--] = s[low];
}
s[low] = pivot;
quickSort(s, l, low - 1); //low左边递归调用
quickSort(s, low + 1, r); //low右边递归调用
}
}
int main()
{
cout << "请输入待排序的数据:" << endl;
int n,s;
int i = 0;
vector<int> m;
while (cin >> s)
{
m.push_back(s);
i++;
if (cin.get() == '\n')
break;
}
quickSort(m, 0, i-1);
cout << "请输出排序后的数据:" << endl;
for (int j = 0; j < i; j++)
{
cout << m[j] << " ";
}
system("pause");
return 0;
}
这篇关于C++ 快排第二种的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!