Java 数组元素的排序,输出排序后的序号,从小到大排序,并且要求相同的数据其序号是相同的。

怎样求该数排序后的序号

第1个回答  2012-11-05
public class BubbleSort {
/**
* 冒泡排序
* @param args
*/
public static void main(String[] args) {
int[] num={51,15,12,84,21,24,0,114,54,123,1,25,4,6};
int tmp=0;
for(int n=0;n<num.length;n++){
System.out.println(num[n]+"排序前的序号为:"+(n+1));
}
for(int i=0;i<num.length;i++){
for(int j=i+1;j<num.length;j++){
if(num[i]>num[j]){
tmp=num[i];
num[i]=num[j];
num[j]=tmp;
}
}
}
System.out.println();
for(int k=0;k<num.length;k++){
System.out.println(num[k]+"排序后的序号为:"+(k+1));
}
}
}追问

本来的数在排序后的序号啊。。
-3 75 12 -3
样例输出

1 3 2 1

第2个回答  2012-11-16
//选择排序
//原理:每次都找到当次最大的数,按大小顺序依次放入数组相应位置
//比如:第一次先找到最大的数并记下其位置,如果其不在数组第一位,
//则将其与第一位交换,使最大数置于第一位
//第二次再循环查找第二大的数并记下其位置,如果其不在数组第二位,
//则将其与第二位交换,使最大数置于第二位
//依次类推.........................................
//第i次再循环查找第i大的数并记下其位置,如果其不在数组第 i位,
//则将其与第 i位交换,使最大数置于第 i位
public class SelectSort {
public static void main(String[] args) {
int[] a = {25,15,42,16,12,36};
int max = 0;
int tmp = 0;
for(int i=0;i<a.length;i++){
max = i;//
/**查找第 i大的数,直到记下第 i大数的位置***/
for(int j=i+1;j<a.length;j++){
if(a[max]<a[j])
max = j;//记下较大数位置,再次比较,直到最大
}
/***如果第 i大数的位置不在 i,则交换****/
if(i!=max){
tmp = a[i];
a[i] = a[max];
a[max] = tmp;
}
}
for(int i=0;i<a.length;i++)
System.out.print(a[i]+" ");
}
}
相似回答