Java学习---快速排序
Posted 测试小牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java学习---快速排序相关的知识,希望对你有一定的参考价值。
基本思想:
在数据序列中选择一个值作为比较的基准值,每趟从数据序列的两端开始交替进行,将小于基准值的元素交换到序列前端,将大于基准值的元素交换到序列后端,介于两者之间的位置则成为基准值的最终位置。同时,序列被划分成两个字序列,再用同样的方法分别对两个子序列进行排序,直到子序列长度为1,完成排序。
完整的代码如下:
public class QuickSort {
public void sort(int[] a) {
if(a!=null && a.length>0) {
this.quickSort(a,0,a.length-1);
}
}
public void quickSort(int[] a,int left,int right) {
if(left<right) {
int index = this.getSortIndex(a, left, right);
this.quickSort(a, left,index-1);
this.quickSort(a, index+1, right);
}
}
public int getSortIndex(int[] a,int left,int right) {
int temp = a[left];
while(left<right) {
while(left<right && a[right]>=temp) {
right--;
}
a[left] = a[right];
while(left<right && a[left]<= temp) {
left++;
}
a[right] = a[left];
}
a[left] = temp;
return left;
}
public static void main(String[] args) {
int[] intArray = {12,11,45,6,8,43,40,57,3,20};
//**************************************************
System.out.println("排序前的数组:");
for(int i=0;i<intArray.length;i++)
System.out.print(intArray[i]+" ");
System.out.println();
//***********快速排序*****************
QuickSort qs = new QuickSort();
qs.sort(intArray);
//***************************************************
System.out.println("排序后的数组");
for(int i=0;i<intArray.length ;i++)
System.out.print(intArray[i]+" ");
}
}
以上是关于Java学习---快速排序的主要内容,如果未能解决你的问题,请参考以下文章