今天看了下算法,然后看了下快速排序,发现网上大家都用一个版本很别扭的一个版本。于是打算自己写一个自己理解的 package calculate; import java.io.*; import java.util.*; /** * 快速排序实现 * @author Administrator * */ public class QuickSort { public static void main(String[] args) { int[] nums = {54, 10, 100, 32,65,35,34,67,98,10 }; nums = sort(nums,0,nums.length-1); for(int i=0;i<nums.length;i++){ System.out.print(" "+nums[i]+" "); } } public static int[] sort(int[] nums,int startaddr,int endaddr){ if(startaddr==endaddr){ return nums; } //实现mid前面的都比mid小,mid后面的都比mid大 int midaddr = startaddr; int midvalus = nums[midaddr]; int end = endaddr; while(midaddr<end){ if(nums[end]<midvalus){ if(midaddr==end-1){ //互换 nums[midaddr] = nums[end]; nums[end] = midvalus; }else{ //三个值移动,mid前面的移动到end ,end移动到mid ,mid往前移动一个位置 int temp = nums[midaddr+1]; nums[midaddr] = nums[end]; //54 nums[midaddr+1] = midvalus; //35 nums[end] = temp; //35 midaddr++; } }else{ end--; } } sort(nums,startaddr,midaddr); sort(nums,midaddr+1,endaddr); return nums; } }