map按key和按value排序

2021-08-07 18:34:44 字數 2607 閱讀 8892

看乙個題:

查詢和排序

題目:輸入任意(使用者,成績)序列,可以獲得成績從高到低或從低到高的排列,相同成績

都按先錄入排列在前的規則處理。

例示:jack 70

peter 96

tom 70

smith 67

從高到低 成績

peter 96

jack 70

tom 70

smith 67

從低到高

smith 67

tom 70

jack 70

peter 96

1、按照value排序

2、可以遞增排序和遞減排序

3、保證排序的穩定性

golang map按key排序//golang的map不保證有序性,所以按key排序需要取出key,對key排序,再遍歷輸出value

package main

import (

"fmt"

"sort"

)func main()

sort.ints(keys)

// to perform the opertion you want

for _, k := range keys }

複製**

golang map按value排序//要對golang map按照value進行排序,思路是直接不用map,用struct存放key和value,實現sort介面,就可以呼叫sort.sort進行排序了。

// a data structure to hold a key/value pair.

type pair struct

// a slice of pairs that implements sort.inte***ce to sort by value.

type pairlist pair

func (p pairlist) swap(i, j int)      

func (p pairlist) len() int           

func (p pairlist) less(i, j int) bool

// a function to turn a map into a pairlist, then sort and return it.

func sortmapbyvalue(m map[string]int) pairlist

}sort.sort(p)

return p}

複製**

golang map遞增排序是遞增排序,如果要實現遞減排序,用sort.reverse

package main

import (

"fmt"

"sort"

)func main()

sort.sort(sort.reverse(sort.intslice(a)))

fmt.println("after reversed: ", a)}

複製**

golang map 排序的穩定性//sort不保證排序的穩定性(兩個相同的值,排序之後相對位置不變),排序的穩定性由sort.stable來保證。

package main

import (

"fmt"

"sort"

)type person struct

type personslice person

func (s personslice) len() int

func (s personslice) swap(i, j int)

func (s personslice) less(i, j int) bool

func main() ,,,

,,  

}sort.stable(a)

fmt.println(a)}

複製**

c++按value排序、遞增和遞減、排序的穩定性/看一下本題的c++解法,c++ sort的第三個引數用來定義排序方法,即按key還是value排序,遞增還是遞減排序等,stable_sort用來保證排序的穩定性,主要思路與golang解法相似,都是用struct封裝key和value來代替map。

#include

#include

#include

#include

using namespace std;

struct student;

bool cmp0(const student &a, const student &b)

bool cmp1(const student &a, const student &b)

int main()

if(type == 0)

stable_sort(stud.begin(), stud.end(), cmp0);   //穩定排序

else

stable_sort(stud.begin(), stud.end(), cmp1);

for(int i = 0; i < n; i ++)

}return 0;}

map按key和value排序

map集合按照key和value排序 按value排序 利用集合中的entry封裝,然後利用內部函式描述比較過程,這裡有兩種方式,可以發現其中的o1和o2表示map中的值,o1其實是偏大的那乙個,然後返回的時候其實是將較大的放在後面。mapmap new treemap map.put b 1 ma...

map 按key排序VS按value排序

最近在pat刷題,其中一道題月餅 25 需要用到對 進行排序,但是排序後要用到 對應的總售價。因而可以考慮用關聯容器進行求解,map是比較合適這題的資料結構。map是用來存放鍵值對的資料結構,可以很方便快速的根據key查到相應的value。關於map的詳細定義及用法可以見c stl之map學習。假如...

Map排序(按key排序,按value排序)

主要分兩種,按鍵排序 按值排序。而且,按key排序主要用於treemap,而按value排序則對於map的子類們都適用。按key排序主要用於treemap,可以實現按照key值的大小,在物件插入時直接插入到合適的位置,保持map的順序性。來看treemap的建構函式 treemap comparat...