给你一个快速排序的例子,我想了一天才搞懂的。- package com.itheima;
- public class Test2 {
- /**
- * 2、 排序有哪几种方法?请列举。并用JAVA实现一个快速排序.
- */
-
- //排序方法有: 冒泡排序,直接插入排序,快速排序,简单选择排序,希尔排序,堆排序。
- public static void main(String[] args) {
- //定义整形数组
- int[] pData=new int[]{66,46,25,99,74,21,93,48};
- //调用快速排序法
- quickSort(pData,0, pData.length);
- //调用打印方法
- print(pData);
- }
-
- //快速排序法
- public static void quickSort(int[] pData,int left,int right)
- {
- //定义局部变量
- int i,j;
- int middle,temp;
- i = left;
- j = right;
- middle = pData[left];
- //一次快速排序
- while(true){
- //从第二个数开始找大于中枢的数 ,从前面开始找大于pData[left]的数
- while((++i)<right && pData[i]<middle);
- //从最后一个数开始找第一个小于中枢pData[left]的数
- while((j--)>left && pData[j]>middle);
- if(i>=j)
- break;
- //交换两边找到的数
- temp = pData[i] ;
- pData[i] = pData[j] ;
- pData[j] = temp ;
-
- }
- //交换中枢
- pData[left] = pData[j] ;
- pData[j] = middle ;
- //递归快排中枢左边的数据
- if(left<j)
- quickSort(pData,left,j) ;
- //递归快排中枢右边的数据
- if(right>i)
- quickSort(pData,i,right) ;
- }
-
-
- public static void print(int[] pData){
- for(int num: pData){
- System.out.print(num+",");
- }
- }
- }
复制代码 |