给定一个长度为N的整形数组arr,其中有N个互不相等的自然数1-N。请实现arr的排序,但是不要把下标位置上的数通过直接赋值的方式替换成
[要求]
时间复杂度为,空间复杂度为
备注:
第一行有一个整数N。表示数组长度
接下来一行有N个互不相等的自然数1-N。
输出N个整数表示排序后的结果
5 2 1 4 5 3
1 2 3 4 5
import java.util.*; public class Main{ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int[] arr = getArr(n); int[] ints = normalSort(arr, n); show(ints); } private static int[] normalSort(int[] arr, int n){ int count = 0; while(count < n){ while (count != arr[count]-1){ swap(arr,count,arr[count]-1); } count++; } return arr; } private static void swap(int[] arr,int i, int j){ int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } private static void show(int[] arr){ for (int i = 0;i<arr.length;i++){ System.out.print(arr[i]+" "); } } private static int[] getArr(int n){ int[] arr = new int[n]; for(int i = n; i > 0; i--){ arr[n-i] = i; } return arr; } }