public static void QuickSort(int[] nums, int left, int right) { if(left < right) { int partitionIndex = Partition(nums, left, right); QuickSort(nums, left, partitionIndex - 1); QuickSort(nums, partitionIndex + 1, right); } } private static int Partition(int[] nums, int left, int right) { int pivot = nums[right]; int i = left - 1; for(int j = left; j < right; j++) { if(nums[j] < pivot) { i++; Swap(nums, i, j); } } Swap(nums, i+1, right); return i + 1; } private static void Swap(int[] nums, int i, int j) { int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; } 解释一下这段代码
时间: 2023-04-04 19:03:24 浏览: 85
这段代码是快速排序算法的实现,通过递归的方式对数组进行排序。其中QuickSort方法接收一个整型数组nums、左边界left和右边界right作为参数,首先判断left是否小于right,如果是,则调用Partition方法获取分区索引partitionIndex,然后对左右两个子数组进行递归排序。Partition方法接收一个整型数组nums、左边界left和右边界right作为参数,首先将最右边的元素作为基准值pivot,然后从左到右遍历数组,如果当前元素小于基准值,则将i加1,并交换i和j位置的元素。最后将i+1位置的元素和基准值交换,并返回i+1作为分区索引。Swap方法用于交换数组中两个位置的元素。
相关问题
用java写快速排序算法
下面是用Java实现快速排序算法的示例代码:
```java
public class QuickSort {
public static void quickSort(int[] nums, int left, int right) {
if (left >= right) {
return;
}
int pivot = partition(nums, left, right);
quickSort(nums, left, pivot - 1);
quickSort(nums, pivot + 1, right);
}
private static int partition(int[] nums, int left, int right) {
int pivot = nums[left];
while (left < right) {
while (left < right && nums[right] >= pivot) {
right--;
}
nums[left] = nums[right];
while (left < right && nums[left] <= pivot) {
left++;
}
nums[right] = nums[left];
}
nums[left] = pivot;
return left;
}
public static void main(String[] args) {
int[] nums = {3, 2, 1, 5, 4};
quickSort(nums, 0, nums.length - 1);
System.out.println(Arrays.toString(nums));
}
}
```
在这个示例中,我们使用了递归的方法实现快速排序。首先我们选取数组的第一个元素作为基准元素,然后通过 partition 方法将数组分成两部分,左边的元素小于等于基准元素,右边的元素大于基准元素。然后对左右两个子数组分别进行快速排序,直到数组已经有序。最后输出排序后的结果。
给我写一个java排序算法
好的,以下是基于快速排序的Java排序算法示例代码:
public class QuickSort {
private int[] nums;
public QuickSort(int[] nums) {
this.nums = nums;
}
public void sort() {
quickSort(0, nums.length - 1);
}
private void quickSort(int left, int right) {
if (left >= right) return;
int pivotIndex = partition(left, right);
quickSort(left, pivotIndex - 1);
quickSort(pivotIndex + 1, right);
}
private int partition(int left, int right) {
int pivot = nums[right];
int i = left - 1;
for (int j = left; j < right; j++) {
if (nums[j] < pivot) {
i++;
swap(i, j);
}
}
swap(i + 1, right);
return i + 1;
}
private void swap(int i, int j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
public static void main(String[] args) {
int[] nums = { 5, 2, 9, 1, 5, 6 };
QuickSort qs = new QuickSort(nums);
qs.sort();
System.out.println(Arrays.toString(nums));
}
}