對list進行排序,python提供了兩個方法
list
.sort(func=
none, key=
none, reverse=
false)
python例項:
>>> list = [2,5,8,9,3]
>>> list
[2,5,8,9,3]
>>> list.sort()
>>> list
[2, 3, 5, 8, 9]
python例項:
>>> list = [2,5,8,9,3]
>>> list
[2,5,8,9,3]
>>> sorted(list)
[2, 3, 5, 8, 9]
例項1:正向排序:
>>>l =[2,3,1,4]
>>>l.sort()
>>>l
>>>[1,2,3,4]
例項2:反向排序:
>>>l = [2,3,1,4]
>>>l.sort(reverse=true)
>>>l
[4,3,2,1]
例項3:對第二個關鍵字排序:
>>>l = [('b',6),('a',1),('c',3),('d',4)]
>>>l.sort(lambda x,y:cmp(x[1],y[1]))
>>>l
[('a', 1), ('c', 3), ('d', 4), ('b', 6)]
例項4: 對第二個關鍵字排序:
>>>l = [('b',6),('a',1),('c',3),('d',4)]
>>>l.sort(key=lambda x:x[1])
>>>l
[('a', 1), ('c', 3), ('d', 4), ('b', 6)]
例項5: 對第二個關鍵字排序:
>>>l = [('b',2),('a',1),('c',3),('d',4)]
>>>import operator
>>>l.sort(key=operator.itemgetter(1))
>>>l
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
例項6:(dsu方法:decorate-sort-undercorate):
>>>l = [('b',2),('a',1),('c',3),('d',4)]
>>>a = [(x[1],i,x) for i,x in enumerate(l)] #i can confirm the stable sort
>>>a.sort()
>>>l = [s[2] for s in a]
>>>l
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
以上給出了6中對list排序的方法,其中例項3.4.5.6能起到對以list item中的某一項
為比較關鍵字進行排序.
效率比較:
cmp < dsu < key
通過實驗比較,方法3比方法6要慢,方法6比方法4要慢,方法4和方法5基本相當 。
例項7:
>>>l = [('d',2),('a',4),('b',3),('c',2)]
>>> l.sort(key=lambda x:x[1])
>>> l
[('d', 2), ('c', 2), ('b', 3), ('a', 4)]
我們看到,此時排序過的l是僅僅按照第二個關鍵字來排的,
如果我們想用第二個關鍵字排過序後再用第乙個關鍵字進行排序呢?有兩種方法 :
例項8:
>>> l = [('d',2),('a',4),('b',3),('c',2)]
>>> l.sort(key=lambda x:(x[1],x[0]))
>>> l
[('c', 2), ('d', 2), ('b', 3), ('a', 4)]
例項9:
>>> l = [('d',2),('a',4),('b',3),('c',2)]
>>> l.sort(key=operator.itemgetter(1,0))
>>> l
[('c', 2), ('d', 2), ('b', 3), ('a', 4)]
兩種氣泡排序
泡泡往前冒 for int i 1 i score.length i 例如 for int i 1 i score.length i system.out.print 第 i 次排序的結果 for int j 0 j score.length j system.out.println for int...
兩種排序方法
題目描述 考拉有n個字串字串,任意兩個字串長度都是不同的。考拉最近學習到有兩種字串的排序方法 1.根據字串的字典序排序。例如 car carriage cats doggies koala 2.根據字串的長度排序。例如 car cats koala doggies carriage 考拉想知道自己的...
兩種快速排序
快排是一種基於交換的排序,氣泡排序 兩兩相鄰作比較,逆序則交換 也是基於交換的排序,快排運用了二分法的思想,每次找乙個哨兵,比哨兵小的放一邊,大的放一邊,這是完成了一趟快排。冒泡 for int i 0 ia j 1 快排一 void quicksort int left,int right if ...