以前对快速排序,仅仅停留在记忆代码的阶段,今天,我真正理解了该排序算法的原理,利用自己脑袋中的理解,在这里用Java语言实现,以便自己以后复习。
快速排序
package sort;
/**
* @packagname:sort
* @classname:FastSort
* @date:2017/2/21
* @author:cullinans
* @des: 快速排序
*/
public class FastSort {
public static void main(String[] args){
int[] arr={6,1,2,7,9,3,4,5,10,8};
diguisort(arr,0,arr.length-1);
for(int i:arr){
System.out.println(i);
}
}
public static void diguisort(int[] arr,int start,int tail){
if(start>=tail)
return;
int index=myFastSort(arr,start,tail);
diguisort(arr,start,index-1);
diguisort(arr,index+1,tail);
}
public static int myFastSort(int[] arr,int start,int tail){
int key=arr[start];
int m=start;
while(tail>start){
while(arr[tail]>key && tail>start){
tail--;
}
while(arr[start]<=key && tail>start){
start++;
}
int temp;
if(start==tail){
temp=arr[start];
arr[start]=key;
arr[m]=temp;
return start;
}else{
temp=arr[start];
arr[start]=arr[tail];
arr[tail]=temp;
}
}
return start;
}
}
运行结果截图
![这里写图片描述](https://img-blog.csdn.net/20170316203103326?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFvemh1eHVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)