快速排序是程序员经常接触的一种排序, 属于交换排序, 快速排序是对冒泡排序的一种改进。
在快速排序中,记录关键字的比较和记录的交换是从两端向中间进行的, 待排序关键字较大的记录一次就能够交换到后面单元中,而关键字较小的记录一次就能够交换到前面单元中, 记录每次移动的距离较远, 因此总的比较和移动次数较小,速度较快, 故称为 “快速排序” 。
正因如此,?
这句话必须牢牢记住!!! 这是回答某种排序不稳定的关键原因。
一趟快速排序的具体操作是: 设两个指针 i 和 j, 它们的初值分别为 low 和 high,基准记录 x = R[i],? 首先从 j 所指位置起向前搜索找到第一个关键字小于基准 x.key 的记录存入当前 i 所指向的位置上,i自增1, 然后再从 i 所位置起向后搜索, 找到第一个关键字大于 x.key的记录存入当前 j所指向的位置上, j自减1;? ?重复这两步,直至 i 等于 j为止。?