//解决了数组不打乱排序的问题
import java.util.*;
public class WorkHours
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int[][] hours = new int[8][8];
for(int i=0;i<8;i++)
for(int j=0;j<7;j++)
{
hours[i][j] = input.nextInt();
hours[i][7] += hours[i][j];
}
int[] sums = new int[8];//将带待排序内容放入另一个数组,排序
for(int i=0;i<8;i++)
sums[i] = hours[i][7];
sort(sums);
for(int i=7;i>=0;i--)
{
for(int j=0;j<8;j++)//按排好序的数组查找遍历原目标数组
{
if(sums[i] == hours[j][7])
{ System.out.println(j+ " "+hours[j][7]);}//易发生多次扫描
}
}
}
public static void sort(int [] sums)
{
for(int i=0;i<7;i++)
{
int currentMin = sums[i];
int currentMinIndex = i;
for(int j=i+1;j<8;j++)
{
if(currentMin<sums[j])
{
currentMin = sums[j];
currentMinIndex = j;
}
}
if(currentMinIndex != i)
{
sums[currentMinIndex] = sums[i];
sums[i] = currentMin;
}
}
for(int i=0;i<4;i++)//倒序
{
int temp = sums[i];
sums[i] = sums[7-i];
sums[7-i] = temp;
}
for(int i=0;i<7;i++)
{
if(sums[i]==sums[i+1])
sums[i]=-1;//重复元素置-1,防止多次扫描
}
}
}
《Java语言程序设计 基础篇》(机械工业出版社 原书第十版)习题8.3