【题目】给定一个长度为N的整型数组arr,其中有N个互不相等的自然数1N,请实现arr的排序,但是不要把下标0N-1位置上的数通过直接赋值的方式替换成1~N。
【要求】时间复杂度O(N),额外空间复杂度为O(1)
public static void sort(int[] arr) {
if (arr == null || arr.length < 2) {
return;
}
int tmp = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] != i + 1) {
tmp = arr[arr[i] - 1];
arr[arr[i] - 1] = arr[i];
arr[i] = tmp;
}
}
}