【排序算法】快速排序
快速排序算法原理 快速排序的原理 :是给基准数据找其正确索引位置的过程 快速排序常用术语:基准数,标志,指针,游标(后三个术语具有相同含义) 下面结合图例来理解快速排序 1.最开始选定的基准数据为数组第一个元素8,则首先用一个临时变量去存储基准数据,即tmp=8;然后分别从数组的两端扫描数组,设两个指示标志:左标志left=0指向起始位置,右标志right=4指向数组末尾 2.从数组右边开始,right=4。如果扫描到的值大于基准数据就让right减1, 如果发现有元素比该基准数据的值小(如上图中5<=tmp),就将right=4位置的值赋值给left=0位置,。 结果如下图: 然后left++,因为left=0处的值已经小于基准数,所以接下来从left+1处继续执行算法。 3.从左往右扫描,如果扫描到的值小于基准数据就让left加1,如果发现有元素大于基准数据的值,就将left位置的值赋值给right位置的值。 左移标志继续向右动最终left=right=4 ,结果如下: 4.left=right,基准数据的正确位置已找到,接下来 将tmp中保存在基准数据存放在正确索引位置(也就是arr[left] = arr[4] = tmp = 8), 第一个基准元素完成定位,如图所示: 5.递归调用快排函数,重复执行1,2,3,4步骤,直到递归结束,完成排序。 PS:从上述1-4步骤看出,