欢迎访问宙启技术站
智能推送

实现夹逼排序的Java函数

发布时间:2023-06-10 11:34:29

夹逼排序,也称为快速排序,是一种常用的排序算法。它的基本思路是将一个数组分成两个部分,一部分比另一部分小或大,然后在两部分中分别递归地进行排序。在排序的过程中,我们需要选取一个元素作为枢轴,将数组分为两部分。一部分中的元素都比枢轴小,另一部分中的元素都比枢轴大。

实现夹逼排序的Java函数,我们可以采用以下步骤:

1. 定义一个夹逼排序的静态方法,参数为待排序的数组,以及数组的起始和终止下标。

public static void quickSort(int[] arr, int left, int right) {
    // 待实现的排序算法
}

2. 在方法中,我们需要定义两个变量,i和j,分别从left和right开始,表示待排序的数组的起始和终止位置。同时,我们需要选取一个枢轴元素 pivot,这里我们选取数组的中间元素。

int i = left, j = right;
int pivot = arr[(left + right) / 2];

3. 开始进行排序,我们需要循环比较左右两侧的元素,并交换它们的位置。在交换元素的过程中,需要更新i和j的值。

while (i <= j) {
    while (arr[i] < pivot) {
        i++;
    }
    while (arr[j] > pivot) {
        j--;
    }
    if (i <= j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
        i++;
        j--;
    }
}

4. 排序完成后,我们需要递归地对左右两侧的子数组进行排序。

if (left < j) {
    quickSort(arr, left, j);
}
if (i < right) {
    quickSort(arr, i, right);
}

5. 完整代码如下:

public static void quickSort(int[] arr, int left, int right) {
    int i = left, j = right;
    int pivot = arr[(left + right) / 2];

    while (i <= j) {
        while (arr[i] < pivot) {
            i++;
        }
        while (arr[j] > pivot) {
            j--;
        }
        if (i <= j) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
            i++;
            j--;
        }
    }
    if (left < j) {
        quickSort(arr, left, j);
    }
    if (i < right) {
        quickSort(arr, i, right);
    }
}

使用夹逼排序的Java函数,我们可以在main函数中对一个数组进行排序:

public static void main(String[] args) {
    int[] arr = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};

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

    for (int i : arr) {
        System.out.print(i + " ");
    }
}

输出结果为:

1 1 2 3 3 4 5 5 5 6 9