java排序一个数组(数组元素有重复的),并且记住新数组的元素在原数组中的位置,我需要能够运行的程序!

2024-11-27 11:33:11
推荐回答(2个)
回答1:

public class ArrayTest {
public static void main(String[] args) {
//java排序一个数组(数组元素有重复的),并且记住新数组的元素在原数组中的位置
int[] ary = {1,2,3,4,1,2};
int[] index = new int[ary.length];
for (int i = 0; i < index.length; i++) {
index[i] = i;
}
for (int i = 0; i < ary.length-1; i++) {
for (int j = i+1; j < ary.length; j++) {
if(ary[i]>ary[j]){
int temp = ary[i];
int p = index[i];
ary[i] = ary[j];
index[i] = index[j];
ary[j] = temp;
index[j] = p;
}
}
}
System.out.println(Arrays.toString(ary));
System.out.println(Arrays.toString(index));
}
}

回答2:

//你改一下吧 重复的数字 不会弄啊 

import java.util.ArrayList;
import java.util.List;

public class TestArrayXb {
public static void main(String[] args) {
// 声明一个整型数组
int[] array = new int[] { 32, 52, 321, 5, 2, 6,52, 323, 65, 87, 0, 21343 };

List list = new ArrayList();
for (int i : array) {
list.add(i);
}
int k, temp;
for (int i = 0; i < array.length; i++) {
k = i;
for (int j = k + 1; j < array.length; j++) {
if (array[j] < array[k]) {
k = j;
}
}
if (k != i) {
temp = array[i];
array[i] = array[k];
array[k] = temp;
}
System.out.print(" "+array[i]);
}
System.out.println();
// 对数组排序
java.util.Arrays.sort(array);
System.out.println(" 它们的下标分别为:");
// 倒序输出数组中最大的5个数及其下标
for (int i = array.length - 1; i > -1; i--) {
System.out.print(array[i] + " 下标:");
System.out.print(list.indexOf(array[i]) + "\r\n");
}
}

}