给定一个包含n个元素的数组,我们可以通过执行一个交换操作来按升序对这个数组进行排序吗?
例如下面的数组:
int[] data = {1,9,6,3}
我们只需要用9进行交换,只有一个交换操作,我的数组可以按照升序排列.如果数组已经按升序排序,那么我们可以直接返回true.
我开始下面的代码,但我被卡住了,我不知道我该怎么办?
public static boolean verifyOrder(int[] data) { List<Integer> input = new ArrayList<Integer>(); for (int index = 0; index < data.length; index++) { input.add(data[index]); } int j = 0; while (j < input.size() - 1 && input.get(j) <= input.get(j + 1)) { j++; } if (j == input.size() - 1) { // yes we can sort array with only one swap operation return true; } // not sure how should I proceed? }
处理这个问题的有效方式是什么?