JAVA两个一维数组,快乐冒泡排序
成绩排序
http://www.nowcoder.com/questionTerminal/3f27a0a5a59643a8abf0140b9a8cf1f7
主要思路:
创建两个一维数组对应学号和成绩,然后冒泡排序同时维护两个数组内值,在应用层实现同时替换(不会list集合QAQ)。然后使用双指针法设置left,right两个变量形成滑动窗口,找到一个区间的值来进行学号的排序。学号的排序只要确定同分的区间就很容易的调用Arrays.sort(int[] arr,int left,int right)方法实现。
package demo.day0203; import java.util.Arrays; import java.util.Scanner; //class Student{ // public int xh; // public int cj; // public Student(int xh,int cj){ // this.xh=xh; // this.cj=cj; // } //} public class StudentSort { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int N=sc.nextInt(); int[] xh=new int[N]; int[] cj=new int[N]; for(int i=0;i<N;i++){ xh[i]=sc.nextInt(); cj[i]=sc.nextInt(); } for(int i=0;i<N-1;i++){ for(int j=0;j<N-1-i;j++){ if(cj[j]>cj[j+1]){ int temp=cj[j]; cj[j]=cj[j+1]; cj[j+1]=temp; temp=xh[j]; xh[j]=xh[j+1]; xh[j+1]=temp; } } } int left=0,right=0; while(right<N) { while (right < N && cj[left] == cj[right]) right++; Arrays.sort(xh, left, right ); left = right; } for(int i=0;i<N;i++){ System.out.println(xh[i]+" "+cj[i]); } } }