排序

快速排序 模板

    def sortIntegers2(self, A):
        
        self.quickSort(A, 0, len(A) - 1)
        
    def quickSort(self, A, start, end):
        if start >= end:
            return
        
        left, right = start, end
        pivot = A[(start + end) / 2];

        
        while left <= right:
            while left <= right and A[left] < pivot:
                left += 1
            
            while left <= right and A[right] > pivot:
                right -= 1
            
            if left <= right:
                A[left], A[right] = A[right], A[left]
                
                left += 1
                right -= 1
        
        self.quickSort(A, start, right)
        self.quickSort(A, left, end)

Python變量值交換

聲明變量

a=50

b=10

開始交換鸠天,先把其中一個(gè)值賦給臨時(shí)變量路克,然后才能實(shí)現(xiàn)交換變量统抬。

tmp = a

a = b

b = tmp

在Python中,實(shí)現(xiàn)兩個(gè)變量值交換非常方便

聲明變量

a=50

b=10

開始交換變量

a,b = b,a

歸并排序
Python一切皆對(duì)象
Python一切皆對(duì)象舉例
python函數(shù)傳參是傳值還是傳引用主籍?

    def sortIntegers2(self, A):
      n = len(A)
      if n <= 1:
         return A
      return self.sort(A, 0, n - 1)

   def sort(self, A, low, high):
      if low > high:
         return []
      elif low == high:
         return [A[low]]
      mid = (low + high) / 2
      left = self.sort(A, low, mid)
      right = self.sort(A, mid + 1, high)
      return self.merge(left, right)

   def merge(self, left, right):
      n = len(left)
      m = len(right)

      if n == 0:
         return list(right)
      if m == 0:
         return list(left)

      i, j = 0, 0
      result = []

      while i < n and j < m:
         if left[i] <= right[j]:
            result.append(left[i])
            i += 1
         else:
            result.append(right[j])
            j += 1

      if i <= n - 1:
         for k in range(i, n):
            result.append(left[k])
      if j <= m - 1:
         for k in range(j, m):
            result.append(right[k])

      return result

堆排序
堆排序就是把最大堆堆頂?shù)淖畲髷?shù)取出门烂,將剩余的堆繼續(xù)調(diào)整為最大堆乳愉,再次將堆頂?shù)淖畲髷?shù)取出,這個(gè)過程持續(xù)到剩余數(shù)只有一個(gè)時(shí)結(jié)束屯远。在堆中定義以下幾種操作:

最大堆調(diào)整(Max-Heapify):將堆的末端子節(jié)點(diǎn)作調(diào)整蔓姚,使得子節(jié)點(diǎn)永遠(yuǎn)小于父節(jié)點(diǎn)
創(chuàng)建最大堆(Build-Max-Heap):將堆所有數(shù)據(jù)重新排序,使其成為最大堆
堆排序(Heap-Sort):移除位在第一個(gè)數(shù)據(jù)的根節(jié)點(diǎn)慨丐,并做最大堆調(diào)整的遞歸運(yùn)算
常見排序算法 - 堆排序 (Heap Sort)

def adjust_heap(lists, i, size):
    lchild = 2 * i + 1
    rchild = 2 * i + 2
    max = i
    if i < size / 2:
        if lchild < size and lists[lchild] > lists[max]:
            max = lchild
        if rchild < size and lists[rchild] > lists[max]:
            max = rchild
        if max != i:
            lists[max], lists[i] = lists[i], lists[max]
            adjust_heap(lists, max, size)
 
def build_heap(lists, size):
    for i in range(0, (size/2))[::-1]:
        adjust_heap(lists, i, size)
 
def heap_sort(lists):
    size = len(lists)
    build_heap(lists, size)
    for i in range(0, size)[::-1]:
        lists[0], lists[i] = lists[i], lists[0]
        adjust_heap(lists, 0, i)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末赂乐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子咖气,更是在濱河造成了極大的恐慌挨措,老刑警劉巖挖滤,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異浅役,居然都是意外死亡斩松,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門觉既,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惧盹,“玉大人,你說我怎么就攤上這事瞪讼【” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵符欠,是天一觀的道長嫡霞。 經(jīng)常有香客問我,道長希柿,這世上最難降的妖魔是什么诊沪? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮曾撤,結(jié)果婚禮上端姚,老公的妹妹穿的比我還像新娘。我一直安慰自己挤悉,他們只是感情好渐裸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著装悲,像睡著了一般昏鹃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上衅斩,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天盆顾,我揣著相機(jī)與錄音怠褐,去河邊找鬼畏梆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛奈懒,可吹牛的內(nèi)容都是我干的奠涌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼磷杏,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼溜畅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起极祸,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤慈格,失蹤者是張志新(化名)和其女友劉穎怠晴,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浴捆,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蒜田,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了选泻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冲粤。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖页眯,靈堂內(nèi)的尸體忽然破棺而出梯捕,到底是詐尸還是另有隱情,我是刑警寧澤窝撵,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布傀顾,位于F島的核電站,受9級(jí)特大地震影響忿族,放射性物質(zhì)發(fā)生泄漏锣笨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一道批、第九天 我趴在偏房一處隱蔽的房頂上張望错英。 院中可真熱鬧,春花似錦隆豹、人聲如沸椭岩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽判哥。三九已至,卻和暖如春碉考,著一層夾襖步出監(jiān)牢的瞬間塌计,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來泰國打工侯谁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锌仅,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓墙贱,卻偏偏與公主長得像热芹,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子惨撇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容