一、快速排序算法分析
升序算法描述:在数据序列中选择第一个元素作为基准值,每趟从数据序列的两端开始交替进行,将小于基准值的元素交换到序列前端,将大于基准值的元素交换到序列后端,介于两者之间的位置则成为基准值的最终位置,同时,序列被划分成两个子序例,再分别对两个子序列进行快速排序,直到子序列长度为1,则完成排序。
降序,我就不多介绍了,就改改关键字眼,代码实现有降序,可以看看代码!
二、代码实现
package top.einino.swapsort;
public class QuickSort {
//默认快速排序为升序状态
public static void quickSort(int[] keys){
quickSort(keys, 0, keys.length-1, true);
}
//asc为true表示升序,asc为false表示升序
public static void quickSort(int[] keys, boolean asc){
quickSort(keys, 0, keys.length-1, asc);
}
//对存于keys数组begin-end之间的子序列进行一趟排序,递归算法。
private static void quickSort(int[] keys, int begin, int end, boolean asc) {
//序列有效
if(begin>=0 && begin<keys.length && end>=0 && end<keys.length && begin<end){
//i,j下标分别从子序列的前后两端开始
int i = begin, j = end;
//子序列第一个值作为基准值
int vot = keys[i];
while(i != j){
//升序(降序)是从最后一步一步向前寻找较小值(较大值),都是不移动与基准值相等元素,