实现夹逼排序的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
