快速排序算法
1. 以首元素作为分界值
package com.cn.gao; public class QuickSort { public static final int SIZE=10; //快速排序的一次划分 public static int partition(int[] a,int left, int right){ int temp,l,r; l=left; r=right; temp=a[l]; //将首元素作为分界值 while(l<r){ while(a[r]>temp&&l<r) r--; if(l<r){ a[l]=a[r]; l++; } while(a[l]<temp&&l<r) l++; if(l<r){ a[r]=a[l]; r--; } } a[l]=temp; return l; } //快速排序算法 public static void quickSort(int[] a,int left,int right){ int p; if(left<right){ p=partition(a,left,right); quickSort(a,left,p-1); quickSort(a,p+1,right); } } public static void main(String[] args) { int[] a = new int[SIZE]; //为数组赋值 for(int i=0;i<a.length;i++){ a[i] = (int) (100 + Math.random()*100); } //输出排序前的数组 System.out.println("排序前的数组为:"); for(int i=0;i<a.length;i++){ System.out.print(a[i]+" "); } System.out.println(); //对数组排序 quickSort(a,0,a.length-1); //输出排序后的数组 System.out.println("排序后的数组为:"); for(int i=0;i<a.length;i++){ System.out.print(a[i]+" "); } System.out.println(); } }