【分治法】快速排序

一、快速排序:

快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。

该方法的基本思想是:

  • 1.先从数列中取出一个数作为基准数。(第一个数)
  • 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
  • 3.再对左右区间重复第二步,直到各区间只有一个数。  

二、思路分析:

1、两个主要功能函数:int find(int *b,int left,int right)与 void quicksort(int *b,int left,int right)

2、find()功能:将传入的区间首值放至正确位置(其左边值皆小于其,其右边值皆大于其)

3、quicksort()函数功能:调用find将该区间首值放至正确位置,再对已放至正确位置的左边区间与右边区间快排。

4、find()函数详解:flag表示的从left+1位置至flag位置存的数据皆小于b[left]。

       (1)、 i是循环遍历的,但flag只会因if(b[i]

       (2)、若出现了b[i]

三、代码如下:

//快速排序分治法 
#include 

using namespace std;
#define N 1000
int n=5;
int a[N];
int find(int *b,int left,int right){//将首位数放至正确位置:其左边值皆小于它,右边值皆大于它 
	if(left>a[i];
	}
	//cout<

四、示例输入输出:

1、输入

522 2401 123 100 2

2、输出

2 100 123 522 2401

你可能感兴趣的:(#,分治法,#,排序,蓝桥杯,c++,算法,分治算法,数据结构)