枢纽元:与其他数做大小比较作用,作为一个中间参考值。
步骤:
1. 通过选取第一个元素、最后一个元素和最中间一个元素的中间值作为枢纽元。
2. 将枢纽元与最后一个元素交换位置。
3. i指向第一个元素,j指向倒数第二个元素(最后一个元素为枢纽元)。
4. i向右移直到i指向的元素大于等于枢纽元就停止移动。(跳过那些小于枢纽元的元素,这样就能保证比枢纽元小的元素在右边)
5. j向左移直到j指向的元素小于等于枢纽元就停止移动。(跳过那些大于枢纽元的元素,这样就能保证比枢纽元大的元素在左边)
6. 如果i与j交错(即i在j的右边,在此之前i一直在j的左边),就跳至第8步。
7. 交换i与j指向元素的位置(小于等于枢纽元的元素放右边,大于等于枢纽元的元素放左边),i向右移动一个单位,j向左移动一个单位。重复4、5、6步骤。
8. 换i指向的元素和最后枢纽元的位置。分别对枢纽元前面的元素(小于等于枢纽元)和后面的元素(大于等于枢纽元)进行同样的上述步骤(递归)。
注意:当集合中的元素个数小于等于2个的时候,就直接进行判断。
上述步骤可以做适当改动。
选取枢纽元特别重要。
自己列举几个例子按照上面的步骤走几遍。
可以动手编程实践,实现三数中值分割法的快速排序。(很有意义)
禁止转载!