快速排序的想法是这样的:
将数组的最后一个元素,array[last]作为主元进行判断,其实就是一个mark(标志)。比mark小的放前面,比mark大的放在后面,最后把mark放在正确的位置。
具体的步骤如下:
用三个指针进行标识,i :指向比mark小的最后一个量 j :用来遍历,从0~last-1,就是说不包括mark
i一开始指向first-1,将array[j]和mark进行比较,如果比mark小。
将i向前移一位,array[j] 和array[i]的值互换,这样小的值就到前面去了。
最后,将mark放到array[i+1]的位置。
这样一遍循环后,mark就放到了正确的位置上,前面的比mark小,后面的比mark大。
然后,再对前一半和后一半进行递归调用。
注意要有递归结束条件