快排(java实现)

版权声明:本人发布内容起于爱好,仅限于参考,若有侵权请联系本人予以更正。 https://blog.csdn.net/baidu_38225647/article/details/81230929

在下边工具类MyArrays中
思路:
这里写图片描述
import java.util.Arrays;

public class MyArray {
public static double getMax(double[] arr) {
double max = arr[0];
for (int i = 1; i < arr.length; i++) {
if (max < arr[i]) {
double temp = max;
max = arr[i];
arr[i] = temp;
}
}
return max;
}

public static double getMin(double[] arr) {
    double min = arr[0];
    for (int i = 1; i < arr.length; i++) {
        if (min > arr[i]) {
            double temp = min;
            min = arr[i];
            arr[i] = temp;
        }
    }
    return min;
}

public static double getLength(double[] arr) {
    return arr.length;
}

// 快速排序
public static void sort(double[] arr) {
    quickSort(arr,0,arr.length);
}

// 一趟
public static int adjustArray(double[] arr, int s, int l) {
    int i = s, j = l - 1;
    double temp = arr[i];
    while (i < j) {
        // 由左向右查找小于temp的数
        while (i < j && arr[j] >= temp) {
            j--;
        }
        if (i < j) {
            arr[i] = arr[j];
            i++;
        }
        while (i < j && arr[i] <= temp) {
            i++;
        }
        if (i < j) {
            arr[j] = arr[i];
            j--;
        }
    }
    arr[i] = temp;
    System.out.println(i);
    return i;
}

// 分治,递归调用
public static void quickSort(double[] arr, int s, int l) {
    if (l - s > 0) {
        int i = adjustArray(arr, s, l);
        quickSort(arr, i + 1, l);
        quickSort(arr, s, i);

    }
}

public static void print(double[] arr) {
    System.out.println(Arrays.toString(arr));
}

public MyArray() {
    // TODO Auto-generated constructor stub
}

public static void main(String[] args) {
    // TODO Auto-generated method stub
    double[] arr = { 1, 2, 5, 3, 6, 3, 2, 5 };
    /*System.out.println(getMax(arr));
    System.out.println(getMin(arr));*/
    sort(arr);

    print(arr);
}

}

ps:本人java小白,望路过大佬指点

猜你喜欢

转载自blog.csdn.net/baidu_38225647/article/details/81230929