快速排序思路:确定一个基准数,让这个基准数的左边全部小于它,右边的数全部大于它! 这样就分出了左边区间和右边区间。然后分别又对这两个区间一样的步骤。
代码实现思路:
1)确定一个基准数(通常取参与排序的首个元素)
2)定义两个指针,一个头,一个尾。分别指向头元素和尾元素
while(头指针<尾指针){
3)先从尾指针看。如果尾指针指向的元素>=基准数,就尾指针--;当条件不成立时,就将尾指针指向的元素放到头指针的位置。即 数组[头]=数组[尾];
4) 只要交换了位置,就变换看法。现在从头指针看,同样的,头指针指向的元素<=基准数,就头指针++;当条件不成立时,就将头指针指向的元素放到尾指针位置。即 数组[尾]=数组[头];
}
// 当程序退出while循环,说明头指针和尾指针碰到了一起,同时已经将这个基准数的左边全部小于大,右边全部大于它。
// 此时就将基准数放入到属于它位置的地方
数组[头指针/尾指针]=基准数;
递归左区间
递归右区间