846. 多關鍵字排序
給定 n
個學生的學號(從 1
到 n
編號)以及他們的考試成績,表示爲(學號,考試成績),請將這些學生按考試成績降序排序,若考試成績相同,則按學號升序排序。
樣例
樣例1
輸入: array = [[2,50],[1,50],[3,100]]
輸出: [[3,100],[1,50],[2,50]]
樣例2
輸入: array = [[2,50],[1,50],[3,50]]
輸出: [[1,50],[2,50],[3,50]]
代碼區:
public class Solution {
/**
* username:softstarhhy
* @param array: the input array
* @return: the sorted array
*/
public int[][] multiSort(int[][] array) {
// Write your code here
if(array.length<=1)
return array;
int len=array.length;
int i,j;
for(i=0;i<len;i++)
{
for(j=i;j<len;j++)
{
if(array[i][1]>=array[j][1])
{
}else
{
int[][] mid=new int[1][2];
mid[0][0]=array[j][0];
mid[0][1]=array[j][1];
array[j][0]=array[i][0];
array[j][1]=array[i][1];
array[i][0]=mid[0][0];
array[i][1]=mid[0][1];
}
}
}
for(int k=0;k<len;k++)
OutputList(array);
return array;
}
//輸入數組
public void OutputList(int[][] arraylist)
{
int len2=arraylist.length;
int flag=arraylist[0][1];
int start=0;int end=0;
for( end=0;end<len2;)
{
if(arraylist[start][1]==arraylist[end][1])
{
if(start==end)
{
end++;
}else if(end+1<len2&&(arraylist[end][1]==arraylist[end+1][1]))
{
end++;
}else
{
BubbleSort(start,end,arraylist);
start=end;
end=end;
}
}else if(arraylist[start][1]!=arraylist[end][1])
{
start++;
end++;
}
}
}
//冒泡進行排序
public void BubbleSort(int start,int end,int[][] array)
{
for(int i=start;i<end;i++)
for(int j=end;j>i;j--)
{
if(array[j][0]<array[j-1][0])
{
int curnum=array[j-1][0];
array[j-1][0]=array[j][0];
array[j][0]=curnum;
}
}
}
}