快速排序
它的基本思想是通过一组排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都要比另一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,最终将所有数据变成一个有序数列。
算法设计
快速排序的基本思想是基于分治策略的,其算法思想如下:
- 分解:先从数列中取出一个元素作为基准元素。以基准元素为标准,将问题分解为两个子序列,使小于或等于基准元素的子序列在左侧,大于基准元素的子序列在右侧 。
- 治理:对两个子序列进行快速排序。
- 合并:将排好序的两个子序列合并在一起,得到原解。
源代码
#include <iostream> #include <cstdio> #include <cstdlib> #include <algorithm> using namespace std; int Partition(int r[],int low,int high) { int i=low; int j=high; int pivot=r[low]; //基准变量 while(i<j) //当下界小于上界的时候开始循环 { while(