java – 如何知道一个数组是否可以按一个或多个交换排序?
发布时间:2020-12-14 17:47:45 所属栏目:Java 来源:网络整理
导读:给定一个包含n个元素的数组,我们可以通过执行一个交换操作来按升序对这个数组进行排序吗? 例如下面的数组: int[] data = {1,9,6,3} 我们只需要用9进行交换,只有一个交换操作,我的数组可以按照升序排列.如果数组已经按升序排序,那么我们可以直接返回true.
给定一个包含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? } 处理这个问题的有效方式是什么? 解决方法
我会给你一些提示:
>您必须对数组进行一次迭代,以验证其已经被排序(即,将每个i的数据[i] i = i [i i]从0变为数据长度2). 最多你会在数组上迭代两次,这将给你O(n)运行时间. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |