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

来源:互联网 发布:mac系统无guid分区重装 编辑:程序博客网 时间:2024/04/19 09:47
//解决了数组不打乱排序的问题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

阅读全文
0 0