思路是:先复制数组的那几位到一个新的小数组中,对这个小数组进行排序,然后再将排序后的结果放回原数组。
假设对一个整数数组的前两位进行排序,代码如下:
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] arr = {3, 1, 4, 1, 5, 9};
// 复制前两位到一个新的数组中
int[] temp = new int[2];
System.arraycopy(arr, 0, temp, 0, 2);
// 对新数组进行排序
Arrays.sort(temp);
// 将排序后的结果放回原数组
System.arraycopy(temp, 0, arr, 0, 2);
// 打印结果
System.out.println(Arrays.toString(arr));
}
}
这段代码会输出:[1, 3, 4, 1, 5, 9]
,可以看到前两位被排序了,数组的其余部分保持不变。
这里介绍一下System.arraycopy(),这是Java 中用于复制数组元素的一个本地方法。这个方法非常高效,因为它是在底层实现的,直接操作内存。
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
src
: 源数组,即要从中复制元素的数组。srcPos
: 源数组中的起始位置,从该位置开始复制元素。dest
: 目标数组,即将元素复制到的数组。destPos
: 目标数组中的起始位置,从该位置开始接收复制的元素。length
: 要复制的元素数量。