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学习---快速排序的主要内容,如果未能解决你的问题,请参考以下文章

Java 快速排序算法

快速学习选择排序

Java学习---快速排序

快速学习插入排序

快速排序的算法

快速学习冒泡排序