快速排序的实现:
/*
* 快速排序:思想主要是利用递归和分治。
* 先以数组第一个元素为标准,将数组分为两部分,左边的都比标准小,右边的
* 都比标准元素大。在不断交换的过程中把标准元素插入到数组的中间位置,
* 然后用递归的办法,不断把左右两边细分,直到只剩下最后一个元素即停止。
*/
public static int position(int[]a,int from ,int to){
int i=from;
int j=to;
int init=a[i];
if(i<j){
while(i<j){
while(i<j&&a[j]>=init){
j--;//以第一个元素为标准,先从后面往前面搜寻
//如果找到一个比标准小的元素就将其替换掉为a[i]
}
a[i]=a[j];//此时需要从前面往后面找,如果找到一个比标准大的
//元素就将其换到刚才a[j]的位置
while(i<j&&a[i]<=init){
i++;
}a[j]=a[i];
}
//当循环结束时,需要把a[0]放到a[i],并返回i
a[i]=init;
}return i;}
//然后用递归的办法进行排序,递归的终止条件就是i<j
public static void sort(int[]a,int from,int to){
if(from<to){
int mid=position(a,from,to);
sort(a,from,mid-1);
sort(a,mid+1,to);
}
}
public static void main(String[]args){
int[]sdf={3,4,1,7,4,2,97,23};
sort(sdf,0,7);
for(int ss:sdf){
System.out.println(ss);
}
}