Java编程基础题(2-四维数据排序)

描述
除非有特异功能,否则一个人是不能想象思维空间的样子的。但是,我么可以用计算机处理四维数据。四维空间的一个点可以用一个四元组(t, u, v, w)表示。你的任务很明确:给你若干个四元组,请把它们由小到大排序并输出。排序时,第一维比第二维优先,第二维比第三维优先,第三维比第四维优先。也就是说,先看t,如果t相同,再看u,…

输入
第一行是一个整数n,在[2,20]之间,表示要输入的案例的数量。后面紧跟n个案例。对每个案例,第一行是一个整数mi,在[2, 200]之间,表示该案例中数列元素的数量,后面紧跟mi行,每行有4个整数,一个四元组,相邻两个整数间用一个空格隔开,每个元素的范围都是[-5000, 5000]。

输出
对每一个案例,输出由小到大排序后的整个序列,每个四元组占一行。

输入样例
2
3
4 5 3 2
3 4 2 1
3 6 1 2
2
-1 10 9 7
-2 5 3 6

输出样例
3 4 2 1
3 6 1 2
4 5 3 2
-2 5 3 6
-1 10 9 7

参考程序

import java.util.*;
class List_Node
{
	int ArrayGroup[];
	List_Node(int a,int b,int c,int d)
	{
		ArrayGroup=new int[4];
		ArrayGroup[0]=a;
		ArrayGroup[1]=b;
		ArrayGroup[2]=c;
		ArrayGroup[3]=d;
	}
}
public class Main
{
	public static void sort(List_Node[] a,int n)//n表示四元组的数量
	{
		int i,j;
		List_Node temp;
		for(i=1;i<=n-1;i++)//控制冒泡排序的次数,即n-1次
		{
			for(j=0;j<=n-2;j++)//控制参与排序下标,即0~n-2
			{
				if(a[j].ArrayGroup[0]>a[j+1].ArrayGroup[0])
				{//交换
					temp=a[j];
					a[j]=a[j+1];
					a[j+1]=temp;
				}
				else if(a[j].ArrayGroup[0]==a[j+1].ArrayGroup[0])
				{
					if(a[j].ArrayGroup[1]>a[j+1].ArrayGroup[1])
					{//交换
						temp=a[j];
						a[j]=a[j+1];
						a[j+1]=temp;
					}
					else if(a[j].ArrayGroup[1]==a[j+1].ArrayGroup[1])
					{
						if(a[j].ArrayGroup[2]>a[j+1].ArrayGroup[2])
						{//交换
							temp=a[j];
							a[j]=a[j+1];
							a[j+1]=temp;
						}
						else if(a[j].ArrayGroup[2]==a[j+1].ArrayGroup[2])
						{
							if(a[j].ArrayGroup[3]>a[j+1].ArrayGroup[3])
							{//交换
								temp=a[j];
								a[j]=a[j+1];
								a[j+1]=temp;
							}
						}
					}
				}
			}
		}
	}
	public static void main(String[] args)
	{
		Scanner reader=new Scanner(System.in);
		int n,mi;
		n=reader.nextInt();
		
		while(n-->0)
		{
			int i,j;
			mi=reader.nextInt();
			List_Node[] TestGroupArray=new List_Node[mi];
			for(i=0;i<mi;i++)
			{
				TestGroupArray[i]=new List_Node(reader.nextInt(),reader.nextInt(),
						reader.nextInt(),reader.nextInt());
			}
			sort(TestGroupArray,mi);
			for(i=0;i<mi;i++)
			{
				System.out.printf("%d %d %d %d\n",TestGroupArray[i].ArrayGroup[0],
						TestGroupArray[i].ArrayGroup[1],
						TestGroupArray[i].ArrayGroup[2],
						TestGroupArray[i].ArrayGroup[3]);
			}
		}
	}
}

计算机小白,水平较低,欢迎大家批评指正!期待有更好的思路!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值