算法 快速排序 c++语言

Posted 有头发的程序猿#

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法 快速排序 c++语言相关的知识,希望对你有一定的参考价值。

照例算法复习,顺便记录一下快排,以后忘记了不用翻书吧
思想是将一个数组啊a[p:r]以元素a[p]为基础分为a[p:q-1],a[q],a[q+1:r]三段,前半段全部比中间小,后半段全部比中间大,递归排序后,就直接排序好了!

#include<iostream>
using namespace std;
int Partition(int a[],int p,int r)      //返回该段中间的那个数
	int i=p,j=r+1;
	int x=a[p];
	while(true)
	while(a[++i]<x && i<r) ;
	while(a[--j]>x ) ;
	if(i>=j) break;
	swap(a[i],a[j]);
	
	a[p] = a[j];
	a[j] = x;
	return j;

void QuickSort(int a[],int p,int r)
	if(p<r)
	int q=Partition(a,p,r);
	QuickSort(a,p,q-1);
	QuickSort(a,q+1,r);




int main()

	int a[5]=1,4,23,5,3;
	QuickSort(a,0,4);
	for(int x=0;x<=4;x++)
	
		cout<<a[x]<<" ";
	

以上是关于算法 快速排序 c++语言的主要内容,如果未能解决你的问题,请参考以下文章

C++入门:排序之快速排序

在最佳情况下,由于堆栈溢出错误,快速排序算法失败 - C++

快速排序

排序算法总结-选择排序插入排序归并排序和快速排序

c++快速排序算法

C++ 快速排序算法