zoukankan      html  css  js  c++  java
  • 经典排序的python实现

     具体原理我这里就不解释了,可以查看数据结构课本或者百度百科
    这里只给出相应的代码(很简洁)

    1
    __author__ = "WSX" 2 class sort: 3 def __init__(self,): 4 pass 5 6 def merger(self, left , right): # 合并两个有序列表 7 i = 0; j = 0 ; result = [] 8 while left and right: 9 if left[i] <= right[j]: 10 result.append(left.pop(0)) 11 else: 12 result.append(right.pop(0)) 13 result += left[:] 14 result += right[:] 15 return result 16 17 def mergeSort(self, L): #归并排序 18 if len(L) == 1: 19 return L 20 mid = len(L) // 2 21 left = self.mergeSort(L[:mid]) 22 right = self.mergeSort(L[mid:]) 23 return self.merger(left, right) 24 25 def insert1(self, L): #直接插入排序 俩个for实现 26 for i in range(1,len(L)): 27 temp = L[i] 28 for j in range(i-1,-1,-1): 29 if L[i] < L[j]: 30 L[j+1] = L[j] 31 else: 32 j += 1 33 break 34 L[j] = temp 35 return L 36 37 def insert2(self, L): #直接插入排序 for 结合 while 38 for i in range(1, len(L)): 39 temp = L[i] 40 j = i-1 41 while j >=0 and temp < L[j]: 42 L[j+1] = L[j] 43 j -= 1 44 L[j+1] = temp 45 return L 46 47 def bubblk(self, L): #冒泡排序 48 for i in range(len(L)-1): 49 for j in range(len(L)-i-1): 50 if L[j+1] < L[j]: 51 L[j+1], L[j] = L[j], L[j+1] 52 return L 53 54 def quickSort1(self,L): #快速排序 55 if len(L) <= 1: 56 return L 57 else: 58 return self.quickSort1([i for i in L[1:] if i < L[0]]) + [L[0]] + self.quickSort1([j for j in L[1:] if j > L[0]]) 59 60 def shellSort(self, L): 61 pass 62 63 def selectSort(self, L): #选择排序 64 for i in range(len(L) -1 ): 65 index = i 66 for j in range(i+1, len(L)): 67 if L[j] < L[index]: 68 index = j 69 L[index], L[i] = L[i] ,L[index] 70 return L 71 72 def sortHeap(self,L): #堆排序 73 def heap(L, size, root): 74 larger = root 75 left = 2 * root + 1; 76 right = 2 * root + 2 77 if left < size and L[left] > L[larger]: 78 larger = left 79 if right < size and L[right] > L[larger]: 80 larger = right 81 if larger != root: 82 L[larger], L[root] = L[root], L[larger] 83 heap(L, size, larger) 84 85 def bulidHeap(L): # 初始化堆 86 heapsize = len(L) 87 for i in range(heapsize // 2, -1, -1): 88 heap(L, heapsize, i) 89 90 bulidHeap(L) 91 for i in range(len(L) - 1, -1, -1): 92 L[0], L[i] = L[i], L[0] 93 heap(L, i, 0) 94 return L 95 96 a = sort() 97 print(a.sortHeap([25,3,9,7,55,96]))
  • 相关阅读:
    Python 类中方法的内部变量,命名加'self.'变成 self.xxx 和不加直接 xxx 的区别
    用foreach遍历 datagridView 指定列所有的内容
    treeView1.SelectedNode.Level
    YES NO 上一个 下一个
    正则 单词全字匹配查找 reg 边界查找 精确匹配 只匹配字符 不含连续的字符
    抓取2个字符串中间的字符串
    sqlite 60000行 插入到数据库只用不到2秒
    将多行文本以单行的格式保存起来 读和写 ini
    将秒转换成时间格式
    richtextbox Ctrl+V只粘贴纯文本格式
  • 原文地址:https://www.cnblogs.com/WSX1994/p/10744276.html
Copyright © 2011-2022 走看看