公司快速建站,人力招聘网站建设任务执行书,中华会计网校,桂林两江四湖附近酒店快速排序——递归算法 处理i,j的先后顺序不能改变 快速排序的基本思想#xff1a;通过一趟排序将待排记录分隔成独立的两部分#xff0c;其中一部分记录的关键字均比另一部分的关键字小#xff0c;则可分别对这两部分记录继续进行排序#xff0c;以达到整个序列有序。 函数…快速排序——递归算法 处理i,j的先后顺序不能改变 快速排序的基本思想通过一趟排序将待排记录分隔成独立的两部分其中一部分记录的关键字均比另一部分的关键字小则可分别对这两部分记录继续进行排序以达到整个序列有序。 函数 partition()函数实现了根据数组第一个元素区分这个数组比这个元素小的放到mid的前面比这个元素大的放到mid的后面 quicksort()函数实现了递归调用
#includeiostream
#includebits/stdc.h
using namespace std;
vectorint vec;
int partition(vectorint vec,int left,int right);
void QuickSort(vectorint vec,int left,int right)
{if(leftright){int mid partition(vec, left, right);QuickSort(vec, left, mid-1);QuickSort(vec, mid 1, right);}}
int partition(vectorint vec,int left,int right)
{int ileft, jright;int temp vec[left];while(ij){while(tempvec[j]ij)//处理i,j的先后顺序不能改变 {j--;}while(vec[i]tempij)//处理i,j的先后顺序不能改变 {i; }swap(vec[i],vec[j]);}vec[left] vec[j];vec[j] temp;return j;}int main()
{vectorint vec{6,1,2,7,9,3,4,5,10,8};cout排序前的序列;for (auto a:vec){cout a ;}coutendl排序后的序列;int count vec.size()-1;QuickSort(vec, 0, count);for (auto a:vec){cout a ;}coutendl;system(pause);return 0;
}