SDUT 1196-排序问题(java类排序)

排序问题

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

输入10个整数,将它们从小到大排序后输出,并给出现在每个元素在原来序列中的位置。

输入

输入数据有一行,包含10个整数,用空格分开。

输出

输出数据有两行,第一行为排序后的序列,第二行为排序后各个元素在原来序列中的位置。

示例输入

1 2 3 5 4 6 8 9 10 7

示例输出

1 2 3 4 5 6 7 8 9 10
1 2 3 5 4 6 10 7 8 9
Arrays类提供的排序只能升序排,而且是对单调的数字或字母,但可以通过Comparator比较器来修改进行类排序,我想了一下也许这样可以实现对单一数字数组的降序排序?待会试一下
import java.io.*;
import java.util.*;
import java.math.*;
import java.text.*;
class node
{
  public int tag,num;
}
class cmp implements Comparator<node>
{
	public int compare(node A,node B)
	{
		return A.num-B.num;
	}
}
public class Main {
	public static void main(String[] args){
		Scanner in=new Scanner(System.in);
		node[] a=new node[11];
		for(int i=0;i<10;i++){
			a[i]=new node();
			a[i].num=in.nextInt();
			a[i].tag=i+1;
		}
		Arrays.sort(a,0,10,new cmp());
		for(int i=0;i<10;i++)
			if(i!=9)
				System.out.print(a[i].num+" ");
			else
				System.out.print(a[i].num);
		System.out.println("");
		for(int i=0;i<10;i++)
			if(i!=9)
				System.out.print(a[i].tag+" ");
			else
				System.out.print(a[i].tag);
		System.out.println("");
	}
}

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。