赞
踩
1、快速排序的原理是:找到一个主元,将无序的数组分为两部分,比主元大的和比主元小的,以升序为例,将比主元小的依次放在主元的左边,比主元大的一次放在主元右边。对主元左边的再使用快速排序,一直到数组只有两个元素,则将会生成有序的数组,依次对主元右边的进行上述操作即可获得有序数组。
2、伪代码
- PARTITION(Arr , left , right){
- //选择主元
- pca = Arr[right];
- //下标量(比主元大或小的元素应该放置的位置)
- index = left -1;
- for i = left to right-1 //主元就不用比较了
- if Arr[i] <= pca //扫到的元素比主元小,就将其放到最左边
- index++; //有比主元小的了,往后一位,如果下次有的话就放到下一个位置
- swap(Arr[index] , Arr[i])
-
- //循环完毕后,将主元放到中间。此时的index指向的是一个比主元小的元素的位置,
- //其下一位就是不比主元小的元素,将主元换到index+1即可;
- swap(Arr[index+1],Arr[right])
-
- //甩出来主元的位置,用于子数组的划分
- return index+1
- }
-
- QuickSort(Arr , left , right)
- if left < right
- pca = Partition(Arr , left , right)
- QuickSort(Arr , left , pca - 1);
- QuickSo
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。