1. 程式人生 > >846. 多關鍵字排序

846. 多關鍵字排序

描述

給定 n 個學生( 1 到 n 編號)以及他們的考試成績,這裡有兩個關鍵字,考試成績以及學生學號。根據第一關鍵字對陣列進行排序(降序),如果第一關鍵字相同則根據第二關鍵字進行排序(升序).

您在真實的面試中是否遇到過這個題?  

樣例

給出 [[2,50],[1,50],[3,100]]
返回 [[3,100],[1,50],[2,50]]

其實這道題有一個潛在的已經排序的佇列,就是編號1-n。而在所有排序演算法中,有相同值但不改變相對位置的,第一反應是氣泡排序。所以我的思路是,先根據n排序再氣泡排序。

class Solution {
public:
    /**
     * @param array: the input array
     * @return: the sorted array
     */
    vector<vector<int>> multiSort(vector<vector<int>> &array) {
        // Write your code here
        for(int i=0;i<array.size();i++){
            if(array[i][0]!=i+1) {
                swap(array[i],array[array[i][0]-1]);
                i--;
            }
        }
        for(int i=0;i<array.size()-1;i++){
            for(int j=0;j<array.size()-1;j++){
                if(array[j][1]<array[j+1][1])
                    swap(array[j],array[j+1]);
            }
        }
        return array;
    }
    
    void swap(vector<int> &A,vector<int> &B){
        vector<int> tmp=A;
        A=B;
        B=tmp;
    }
};

相關推薦

【兩次過】【Comparator】846. 關鍵字排序

給定 n 個學生( 1 到 n 編號)以及他們的考試成績,這裡有兩個關鍵字,考試成績以及學生學號。根據第一關鍵字對陣列進行排序(降序),如果第一關鍵字相同則根據第二關鍵字進行排序(升序). 樣例 給出 [[2,50],

846. 關鍵字排序

描述給定 n 個學生( 1 到 n 編號)以及他們的考試成績,這裡有兩個關鍵字,考試成績以及學生學號。根據第一關鍵字對陣列進行排序(降序),如果第一關鍵字相同則根據第二關鍵字進行排序(升序).您在真實的面試中是否遇到過這個題?  是樣例給出 [[2,50],[1,50],[3

福大OJ 關鍵字排序和排名

多關鍵字排序和排名 Description 下面是某一屆學生在OJ系統某一時刻的完成情況統計(學生總數不超過170人): 學號 姓名 解題數目 提交次數 222200221 高豔紅 77 124 222200116 吳志贇 80 90 222200240 高一鑫

關鍵字排序(一個快速排序加兩個氣泡排序

#include <stdio.h> #include <stdlib.h> typedef struct { char name[20]; float math,english,computer; float total; }Student; void

c++ sort雙()關鍵字排序

struct a{ int x,y; }k[100001]; bool compare(a m,a n){ if(m.x<n.x) return false; if(m.x==n.x){ if(m.y<=n.y) return false; retu

HDU 2093考試排名(結構體關鍵字排序+字串處理)

題目 Description C++程式設計考試使用的實時提交系統,具有即時獲得成績排名的特點。它的功能是怎麼實現的呢? 我們做好了題目的解答,提交之後,要麼“AC”,要麼錯誤,不管怎樣錯法,總是給你記上一筆,表明你曾經有過一次錯誤提交,因而當你一

excel關鍵字排序 條件排序

今天一個做生意的朋友來問關於excel中排序的問題。他的表格內容類似下圖訴求是在單號進行排序後的基礎上,相同的單號內要按照發貨日期進行排序。經過簡單學習後,歸納總結如下。對於排序項是excel已支援的排序分類,如日期、數值等,可直接選擇基於該型別的排序。對於排序項是excel

設計模式實戰(一)——使用策略模式(strategy pattern)實現關鍵字排序

“策略模式”的出現,是為了提供一套相互之間可靈活替換的演算法,在不影響上層介面的情況下,使用者可以自由選擇不同的演算法完成邏輯。 策略模式的UML示意圖如下:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-c

關鍵字的分組排序

首先說下order byorder by asc是升序一般預設是升序降序的話是order by desc如果我們想按照指定的欄位順序來排列怎麼做呢有一個表t以下是select * from tid Name Country1 A TW2 B

關鍵字查詢並根據匹配程度排序

多個關鍵字,根據包含的關鍵字個數從多到少排列。 即將包含關鍵字多的記錄放在前面,包含少的關鍵字放在後面,不包含關鍵字的則不顯示。比如一個表包含學號、姓名、性別、出生年月、籍貫、專業、學院等等資訊。 現在輸入多個關鍵字如"江蘇省 女 1990年"則將同時包含3個關鍵字的放在最

Sql條件排序

sel http dao 留言 .net get 創建 cat 暴力 多條件排序可以通過在order by語句後面使用case when then條件語句來實現。 select * from 表名 ORDER BY case when 條件 then 0 else 1 e

【ES】學習11-排序

nbsp order key actions color 字符串 efi 結果 literal 聚合結果的排序 默認:桶會根據 doc_count 降序排列。 內置排序: 設置按doc_count升序排序:註意order,_count GET /cars/transa

基數排序keyword排序運用隊列

printf mod n) key sort article name str oid 源碼例如以下: #include <stdlib.h> #include <stdio.h> typedef struct QUEUEnode* li

sort, nth_element 與 雙關鍵字排序

直接 -- 16px 元素 ont sum log set int   雙關鍵字排序: 1 const int T = 100000; 2 int sa[N+5], sum[T], ord[N+5]; 3 void bsort(int *a) { 4 me

c# List linq 權重排序

closed 調用 open log 降序排序 bsp name display new //定義一個類 1 public class 自定義類 { 2 public int Age { get;set;} 3 public strin

MapReduce程序之二次排序排序

大數據 Hadoop MapReduce Java [toc] MapReduce程序之二次排序與多次排序 需求 有下面的數據: cookieId time url 2 12:12:34 2_hao123 3 09:10:34 3_baidu 1 15:0

js數組排序,支持正反排序以及維度排序

數字 ems key isn 默認 clas param sna items 工作中遇到js數組排序問題,數組中存儲的都是對象,於是就百度了下,利用別人的代碼進行修改,最終完成可以倒序、反序,可以進行多維度排序的功能源碼如下: /** * js數組排序 支持數字和字符串

c++結構體雙關鍵字排序

end return com using color 是不是 struct tro 排序 1 #include<bits/stdc++.h> 2 using namespace std; 3 struct node{ 4 int l,r; 5

BZOJ 3709&&AGC 018 C——排序的微擾法

努力 打了 能夠 影響 等於 恢復 cost 費用流 出現 BZOJ 3709? 有n只怪物,你的初始生命值為z。? 為了打敗第i只怪物,你需要消耗cost[i]點生命值,但怪物死後會使你恢復val[i]點生命值。? 任何時候你的生命值都不能小於等於0。? 問是否存在一種打

sort函數實現條件排序

score 多重排序 我們 ava value rip 一個 ont 定義 js的sort方法,我們一般傳入一個回調用於單排序,也就根據某一個條件排序,那麽一個場景需要多條件排序(多重排序),我們怎麽處理呢? 如下例子,我們按學生的總分排序,如果總分相等,我們再按照語文成績