我想做的就是像这样以降序对数组进行排序
Arrays.sort(array);
Collections.reverse(Arrays.asList(array));
然后打印哪个数组元素是第一个,然后是第二个,然后是thrird等。
输入: 10 43 77 23 它们的降序是: 77 43 23 10 我要打印: 3 2 4 1
如果您有任何问题,请随时问我。
提前谢谢!
答案 0 :(得分:0)
如果我理解正确,您是否要在原始数组中打印元素的索引?首先,您需要复制数组,对副本进行排序,然后在原始数组中找到已排序元素的索引。以下代码可以做到这一点。
int[] x = Arrays.copyOf(array, array.length);
Arrays.sort(x);
Collections.reverse(Arrays.asList(x));
List listObject = Arrays.asList(array)
for(int el : x) {
System.out.print(listObject.indexOf(el)
}
这是假设数组中的元素是唯一的。如果数组中的元素属于其他类型,则应相应更改x
和el
的类型。
答案 1 :(得分:0)
您可以使用<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
<div>
<label for="test" class="required">required</label>
<input type="text" id="test" />
</div>
<div>
<label class="required">required but no for</label>
<input type="text" id="test2" />
</div>
<div>
<label for="test3" class="">not required</label>
<input type="text" id="test3" />
</div>
<div>
<label for="test4" class="required">required</label>
<input type="text" id="test4" />
</div>
<div>
<input type="button" value="Save" class="js-submit" />
</div>
</form>
,将元素作为键,将索引作为值。您首先必须使用for循环创建此地图
Map
然后您可以对数组进行排序:
Map<Integer, Integer> indexLookUp = new HashMap<>();
for(int i = 0; i < array.length; i++) {
map.put(array[i], i);
}
您不需要反转部分,因为您可以向后迭代数组。然后通过地图查找打印出元素的索引:
Arrays.sort(array);
答案 2 :(得分:0)
尝试一下:
int array[] = {17, 10, 8, 13, 5, 7, 8, 30};
// Init the element list
List<Element> elements = new ArrayList<Element>();
for (int i = 0; i < array.length; i++) {
elements.add(new Element(i, array[i]));
}
// Sort and print
Collections.sort(elements);
Collections.reverse(elements); // If you want reverse order
for (Element element : elements) {
System.out.println(element.value + " " + element.index);
}
答案 3 :(得分:0)
您可以对索引数组进行排序,而不是对包含实际数据的数组进行排序:
Integer[] indices = new Integer[array.length];
for (int i = 0; i < array.length; ++i) {
indices[i] = i;
}
Arrays.sort(indices, (a, b) -> {
return array[a] < array[b] ? 1 : array[a] > array[b] ? -1 : 0;});