課程
/后端開發
/Python
/python進階
不懂比較函數在這里的工作原理啊,返回的1,-1,0都是怎么起作用的,怎么起到了正序和倒序的排序方式,求幫助
2015-10-21
源自:python進階 2-7
正在回答
sorted默認是
sorted([4,6,8,2等等],cmp)
cmp是里面介紹的輸出-1、1或者0,sorted函數通過cmp的返回值來判斷比較的兩個數的前后順序。
相當于是cmp為sorted提供對比的標準,sorted按照那個標準來排序。sorted函數只認識cmp返回的1、-1和0,并且按照上面介紹的規則來排序。至于從大到小還是從小到大完全取決于cmp的定義。
sorted的排序算法是python設計好的,我們并不需要知道。如果你接觸過其它的語言,在設計到排序時會接觸一些排序的算法,那些算法有好有壞,但可以想象,python的設計者一定是把最好的排序算法用在了sorted里面(并且據我所知,好像不是冒泡法)。如果非要知道排序算法也很簡單,自己定義cmp函數,讓它吧每一次比較的較大或較小的數打印出來,再查一下不同的排序算法,應該就可以反推出來了。
結合教程的介紹,希望你能理解。教程的介紹在這節感覺有些粗糙了。
你可以試一下
原來的 if x > y: ? ? ? ?return -1
改成?
? ? ?if x < y:?
? ? ? ?return -1
看一下結果是什么
這個工作原理應該就是別的程序的所謂的“冒泡法” 一組數,將兩個相鄰的數依次比較大小 ,大的(或者小的)往前挪,比較完了,就會形成從大小排列的新的一組數
舉報
學習函數式、模塊和面向對象編程,掌握Python高級程序設計
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-01-12
sorted默認是
sorted([4,6,8,2等等],cmp)
cmp是里面介紹的輸出-1、1或者0,sorted函數通過cmp的返回值來判斷比較的兩個數的前后順序。
相當于是cmp為sorted提供對比的標準,sorted按照那個標準來排序。sorted函數只認識cmp返回的1、-1和0,并且按照上面介紹的規則來排序。至于從大到小還是從小到大完全取決于cmp的定義。
sorted的排序算法是python設計好的,我們并不需要知道。如果你接觸過其它的語言,在設計到排序時會接觸一些排序的算法,那些算法有好有壞,但可以想象,python的設計者一定是把最好的排序算法用在了sorted里面(并且據我所知,好像不是冒泡法)。如果非要知道排序算法也很簡單,自己定義cmp函數,讓它吧每一次比較的較大或較小的數打印出來,再查一下不同的排序算法,應該就可以反推出來了。
結合教程的介紹,希望你能理解。教程的介紹在這節感覺有些粗糙了。
2015-10-31
你可以試一下
原來的 if x > y:
? ? ? ?return -1
改成?
? ? ?if x < y:?
? ? ? ?return -1
看一下結果是什么
這個工作原理應該就是別的程序的所謂的“冒泡法” 一組數,將兩個相鄰的數依次比較大小 ,大的(或者小的)往前挪,比較完了,就會形成從大小排列的新的一組數