快速排序非递归实现及递归实现性能比较
快排是常用算法,本文不再赘述快排原理。本文主要研究快速排序非递归实现及递归实现在排序900万个int整数时的性能差异。
一 代码
package common.algorithm;
import java.util.Random;
import java.util.Stack;
/**
* 快速排序不同版本
*
* @description QuickSortNonRecursion.java
* @author Administrator
* @date 2018/03/23
* @version
*/
public class QuickSort {
/**
* quickSort TODO :快速排序递归版
*
* @param arr
* @author zhiman
* @date 2018/03/23 下午4:30:40
*/
public void quickSort(int[] arr) {
int left = 0;
int right = arr.length - 1;
quickSort(arr, left, right);
}
/**
* quickSort TODO :快速排序递归版
*
* @param arr
* @param left
* @param right
* @author zhiman
* @date 2018/03/23 下午4:30:20
*/
public void quickSort(int[] arr, int left, int right) {
if (left < right) {
int criticalPoint = partition_0(arr, left, right);
quickSort(arr, left, criticalPoint - 1);
quickSort(arr, criticalPoint + 1, right);
}
}
/**
* quickSortNonRecursion TODO :利用栈实现快速排序---非递归版
*
* @param arr
* 待排数组
* @author zhiman
* @date 2