- 最近学算法,因为前期太懒ACM的题一个不会。从基础的快排学起。
- 上网搜原理很多不好理解,找到一篇大神的图解快速排序,通俗易懂,遂根据这边文章自己写了一遍,加了从键盘输入的main函数,供大家参考。
原文链接:图解快速排序(C++实现)添加链接描述
下面是根据原文自己添加后的代码
#include <iostream>
#include <vector>
using namespace std;
void quickSort(int left, int right, vector<int> &array)
{
if (left >= right)
{
return;
}
int base, teaporary, i, j;
base = array[left];
i = left;
j = right;
while (i < j)
{
while (array[j] >= base && i < j)
{
j--;
}
while (array[i] <= base && i < j)
{
i++;
}
if (i < j)
{
teaporary = array[i];
array[i] = array[j];
array[j] = teaporary;
}
}
array[left] = array[i];
array[i] = base;
quickSort(left, i - 1, array);
quickSort(i + 1, right, array);
}
int main()
{
vector<int> array;
cout << "请输入一个数列" << endl;
int s, i;
for (int i = 0;; i++)
{
cin >> s;
array.push_back(s);
if (cin.get() == '\n')
break;
}
int length;
length = array.size();
quickSort(0, length - 1, array);
cout<<"快速排序后的结果为"<<endl;
for (i = 0; i < length; i++)
{
cout << array[i] << " ";
}
system("pause");
return 0;
}