不改变数组原有顺序按序输出数组

//解决了数组不打乱排序的问题
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值