问题描述
快速排序作为所有排序算法中运行速度比较快的排序算法,在程序员中广为流传,今天本文利用C++语言以及vector数组实现排序算法。
小伙伴们需要自取,有帮助的话可以点个赞~
注:本文中提供的代码均为完整代码,放入C++工程后可直接运行。
代码实现
#include<iostream>
#include<fstream>
#include<vector>
#include<string>
using namespace std;
void quickSort1(vector<int>&, int, int);//从小到大,记得加引用&
void quickSort2(vector<int>&, int, int);//从大到小,记得加引用&
int main()
{
int a[7] = { 7,6,5,4,3,2,1 };
vector<int>vec(a, a + 7);
quickSort1(vec, 0, 6);
for (int i = 0; i < 7; i++)
{
cout << vec[i] << " ";
}
cout << endl;
quickSort2(vec, 0, 6);
for (int i = 0; i < 7; i++)
{
cout << vec[i] << " ";
}
cout << endl;
system("pause");
return 0;
}
void quickSort1(vector<int>&a, int low, int high)
{
if (low >= high)
{
return;
}
int standard = a[low];
int left = low;
int right = high;
while (left < right)
{
while (left<right)
{
if (standard <= a[right])
{
right--;
}
else
{
a[left] = a[right];
left++;
break;
}
}
while (left<right)
{
if (standard >= a[left])
{
left++;
}
else
{
a[right] = a[left];
right--;
break;
}
}
}
a[left] = standard;
quickSort1(a, low, left - 1);
quickSort1(a, right + 1, high);
}
void quickSort2(vector<int>&a, int low, int high)
{
if (low >= high)
{
return;
}
int standard = a[low];
int left = low;
int right = high;
while (left < right)
{
while (left<right)
{
if (standard >= a[right])
{
right--;
}
else
{
a[left] = a[right];
left++;
break;
}
}
while (left<right)
{
if (standard <= a[left])
{
left++;
}
else
{
a[right] = a[left];
right--;
break;
}
}
}
a[left] = standard;
quickSort2(a, low, left - 1);
quickSort2(a, right + 1, high);
}