设计一个方法,以数组的首个元素为基准,将数组中的元素分割成两部分并存放到列表集合中,要求所有小于基准元素的排在基准元素之前(不用排序),大于基准元素的排在基准元素之后,返回调整之后的列表集合 public class PivotDemo { public static void main(String[] args) { int[] array1 = {4,8,2,7,1,5,9,3,6,0}; List<Integer> list=partition(array1); System.out.println(list); //输出:[0, 3, 1, 2, 4, 8, 7, 5, 9, 6] int[] array2 = {0,-2,5,2,-7,13,-15,6,3,5,8,-3,-5}; list=partition(array2); System.out.println(list); //输出:[-5, -3, -15, -7, -2, 0, 5, 2, 13, 6, 3, 5, 8] } public static List<Integer> partition(int[] array){ }}
时间: 2023-06-20 17:10:39 浏览: 133
实现方法如下:
```java
public static List<Integer> partition(int[] array){
int pivot = array[0]; // 基准元素
List<Integer> list = new ArrayList<>();
List<Integer> less = new ArrayList<>(); // 小于基准元素的集合
List<Integer> greater = new ArrayList<>(); // 大于基准元素的集合
for(int i=1; i<array.length; i++){
if(array[i] < pivot){
less.add(array[i]);
} else {
greater.add(array[i]);
}
}
list.addAll(less);
list.add(pivot);
list.addAll(greater);
return list;
}
```
首先取数组的第一个元素作为基准元素。然后遍历数组,将小于基准元素的元素存放到一个集合中,将大于等于基准元素的元素存放到另一个集合中。最后将小于基准元素的集合、基准元素和大于基准元素的集合按顺序添加到结果集合中。最后返回结果集合即可。
测试结果如下:
```
[0, 3, 1, 2, 4, 8, 7, 5, 9, 6]
[-5, -3, -15, -7, -2, 0, 5, 2, 13, 6, 3, 5, 8]
```
阅读全文