lintcode算法題之846-多關鍵字排序

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;
        }
    }
    
}


}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章