半夜醒來,閒來無事,寫寫排序演算法,興之所致,未來得及debug, 有問題自己解決。
# -*- coding: utf-8 -*-
"""created on tue may 19 00:52:47 2015
氣泡排序:
插入排序:
1、每一步就像在一首已經排序的撲克牌中再插入一張牌,這張牌標記為value
2、從最後一張開始比較,如果小於,對應的牌往後挪一位
3、找到位置以後把value牌放在對於的地方
快速排序:
理解遞迴的含義,以fibonacci函式為例,老大向小弟要數,層層下壓,直到碰到return
小弟將數層層計算回傳。
歸併排序:
和快速類似,只要定義好了歸併的方法(merge_method)
@author: zhu
"""import numpy as np
def bubble(arr):
for i in range(len(arr))[::-1]:
for j in range(i):
if arr[j]=0 and arr[index]pivot]
return less + [pivot] + greater
def merge(arr):
if len(arr)<2:
return arr
l=arr[:len(arr)/2]
r=arr[len(arr)/2:]
merge(l)
merge(r)
return merge_method(l,r)
def merge_method(l,r):
tmp,index1,index2=,0,0
for i in range(len(l)):
if index1
常用排序演算法的Python實現
排序演算法穩定性的簡單形式化定義為 如果ai aj,排序前ai在aj之前,排序後ai還在aj之前,則稱這種排序演算法是穩定的。通俗地講就是保證排序前後兩個相等的數的相對順序不變。對於不穩定的排序演算法,只要舉出乙個例項,即可說明它的不穩定性 而對於穩定的排序演算法,必須對演算法進行分析從而得到穩定的...
7種常用排序演算法(python實現)
本節為手撕 系列之第一彈,主要來手撕排序演算法,主要包括以下幾大排序演算法 演算法思想 每一步將乙個待排序的記錄,插入到前面已經排好序的有序序列中去,直到插完所有元素為止。實現 直接插入排序 def insert sort arr length len arr for i in range leng...
常用排序演算法實現
按平均時間將排序分為四類 1 平方階 o n2 排序 一般稱為簡單排序,例如直接插入 直接選擇和氣泡排序 2 線性對數階 o nlgn 排序 如快速 堆和歸併排序 3 o n1 階排序 是介於0和1之間的常數,即0 1,如希爾排序 4 線性階 o n 排序 如桶 箱和基數排序。各種排序方法比較 簡單...