Python版插入排序和歸并排序
由于寫算法實驗,用C++寫的,最近學Python正好用Python實現熟練一下,發現簡潔很多,用著太方便了
下面貼代碼,這倆個排序比較簡單,不加注釋了。
#_*_coding:utf_8_ class Sort(): def __int__(self): self.array = [] self.size = 0 def InitArray(self): n = raw_input() self.size = int(n) for i in range(self.size): data = raw_input() data = int(data) self.array.append(data) def PrintArray(self): for i in range(self.size): print self.array[i] , print '\n' class MyInsertSort(Sort): def __init__(self): self.size = 0 self.array = [] #InitArray def insertSort(self): for i in range(1, self.size): key = self.array[i] j = i - 1 while j >= 0 and self.array[j] > key: self.array[j + 1] = self.array[j] j = j - 1 self.array[j + 1] = key #PrintArray def ExcuteInsertSort(self): self.InitArray() self.insertSort() self.PrintArray() #obj = MyInsertSort() #obj.ExcuteInsertSort() class MergeSort(Sort): def __init__(self): self.size = 0 self.array = [] self.B = [] def MergeSort(self, low, high): if low < high: mid = low + (high - low)/2 self.MergeSort(low, mid) self.MergeSort(mid+1, high) self.Merge(low, mid, high) def Merge(self, low, mid, high): i = low j = mid + 1 self.B = [] while i <= mid and j <= high: if self.array[i] <= self.array[j]: self.B.append(self.array[i]) i += 1 else: self.B.append(self.array[j]) j += 1 while i <= mid: self.B.append(self.array[i]) i += 1 while j <= high: self.B.append(self.array[j]) #???bug j += 1 index = 0 for i in range(low, high+1): self.array[i] = self.B[index] index += 1 def ExcuteMergeSort(self): self.InitArray() self.MergeSort(0, self.size-1) self.PrintArray() obj = MergeSort() obj.ExcuteMergeSort()
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!