快速排序JAVA实现略

南楼画角 提交于 2020-01-18 02:50:53

今天又看了一下快排:

实现的代码如下: 

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Random;

public class QuickSort {
    public static void main(String[] args) {
        int[] arr = new int[20];
        Random rand =new Random();
        for(int i=0;i<arr.length;++i)
            arr[i] = rand.nextInt(40);

        System.out.println("原数据"+Arrays.toString(arr));

        quickSort(arr,0,arr.length-1);

        System.out.println("排序结果"+Arrays.toString(arr));
    }
    public static void quickSort(int[] arr,int low,int high){
        int i,j,temp,t;
        if(low>high) return;

        i=low;
        j=high;

        temp = arr[low];//基准数 以为例
        while (i<j) {

            while (temp<=arr[j]&&i<j) j--;//找到比基准数小的

            while (temp>=arr[i]&&i<j) i++; //找到比基准数大的

            //如果满足条件则交换
            if (i<j) {
                t = arr[j];
                arr[j] = arr[i];
                arr[i] = t;
            }

        }
        //最后将基准为与i和j相等位置的数字交换
        arr[low] = arr[i];
        arr[i] = temp;
        //递归调用左半数组
        quickSort(arr, low, j-1);
        //递归调用右半数组
        quickSort(arr, j+1, high);


    }
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!