天天看點

不改變數組原有順序按序輸出數組

//解決了數組不打亂排序的問題
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