基于java写一个快速排序算法
时间: 2024-05-02 13:21:30 浏览: 92
以下是基于Java的快速排序算法示例代码:
```
public class QuickSort {
public static void main(String[] args) {
int[] nums = {5,2,7,1,3,8,6,4};
quickSort(nums, 0, nums.length-1);
System.out.println(Arrays.toString(nums));
}
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);
}
public 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;
}
public static void swap(int[] nums, int i, int j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
```
在这个示例中,我们首先定义了一个`quickSort`方法,该方法接受一个整数数组和两个整数参数,left和right。left和right分别表示当前需要排序的子数组的左右端点。如果left >= right,则返回,因为数组已经排好序了。
在`quickSort`方法中,我们调用`partition`方法来将数组分成两部分,左侧部分小于等于pivot,右侧部分大于pivot。然后我们递归地调用`quickSort`方法来对左右两部分进行排序。
在`partition`方法中,我们选择最右边的元素作为pivot元素。然后我们定义一个指针i,初始值为left-1。我们从left开始遍历数组,如果当前元素小于pivot,则将i指针向右移动一位,然后交换i和j位置的元素。最后,我们将pivot元素和i+1位置的元素交换,最终返回i+1作为pivot元素的位置。
在`swap`方法中,我们定义了一个方法来交换数组中两个位置的元素。
在main方法中,我们定义了一个整数数组,将其传递给`quickSort`方法进行排序。最后,我们使用`Arrays.toString`方法将排序后的数组打印出来。
阅读全文