用java语言写一个对ArrayList的快速排序法
时间: 2024-05-01 14:20:13 浏览: 15
以下是使用Java语言实现ArrayList的快速排序法的示例代码:
```
import java.util.ArrayList;
public class QuickSortArrayList {
public static void quickSort(ArrayList<Integer> list, int low, int high) {
if (low < high) {
int pivot = partition(list, low, high);
quickSort(list, low, pivot - 1);
quickSort(list, pivot + 1, high);
}
}
public static int partition(ArrayList<Integer> list, int low, int high) {
int pivot = list.get(high);
int i = low - 1;
for (int j = low; j < high; j++) {
if (list.get(j) < pivot) {
i++;
int temp = list.get(i);
list.set(i, list.get(j));
list.set(j, temp);
}
}
int temp = list.get(i + 1);
list.set(i + 1, list.get(high));
list.set(high, temp);
return i + 1;
}
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(5);
list.add(2);
list.add(6);
list.add(1);
list.add(3);
System.out.println("Original list: " + list);
quickSort(list, 0, list.size() - 1);
System.out.println("Sorted list: " + list);
}
}
```
在上面的代码中,我们首先定义了一个静态方法`quickSort`,它接受一个ArrayList,以及要排序的范围(最低索引和最高索引)。在此方法内部,我们首先检查最低索引是否小于最高索引。如果是,则选择一个 pivot 元素,并将数组分为两个部分。然后递归地对左边的部分和右边的部分进行快速排序。在递归过程中,我们使用 `partition` 方法来找到 pivot 元素的正确位置。该方法使用两个指针,一个在数组的最开始,另一个在数组的最后,然后通过比较 pivot 元素和当前元素的大小来交换元素的位置。最后,我们将 pivot 元素插入到正确的位置,并返回其索引。
在 `main` 方法中,我们创建了一个 ArrayList,然后调用 quickSort 方法对其进行排序,并使用 System.out.println 方法来显示原始列表和排序后的列表。