看乙個題:
查詢和排序
題目:輸入任意(使用者,成績)序列,可以獲得成績從高到低或從低到高的排列,相同成績
都按先錄入排列在前的規則處理。
例示: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...