划分算法由两个指针来完成,这两个指针分别指向数组的两头,左指针left向右移动而右指针right向左移动,实际上left和right初始化时是在左右边的各减一位的位置,这是因为它开始算法前它们都要分别的加一和减一。
当left遇到比特定值小的值时它继续右移,因为这个数据项的位置已经在数组的小于特定值得一边了。当遇到比特定值大的数时,它就停下来。类似的,当right遇到比特定值大的数时就继续左移,当遇到比特定值小的数时就停下来。当都停下来的时候left和right都指向了在数组错误一方位置上的数据项,所以交换这两个数据项。交换之后,继续移动两个指针,当指向的数据项在数组的错误的一方时,再次停止然后交换数据。
网友评论