zoukankan      html  css  js  c++  java
  • python_排序_验证

    __author__ = "zhigege"

    #python_排序
    #encoding=utf-8
    import randomfrom copy import copy

    def directInsertSort(seq):
            """ 直接插入排序 """
            size = len(seq)
            for i in range(1,size):
                    tmp, j = seq[i], i
                    while j > 0 and tmp < seq[j-1]:
                            seq[j], j = seq[j-1], j-1
                    seq[j] = tmp
            return seq

    def directSelectSort(seq):
            """ 直接选择排序 """
            size = len(seq)
            for i in range(0,size - 1):
                    k = i;j = i+1
                    while j < size:
                            if seq[j] < seq[k:]
                                    k = j
                            j += 1
                    seq[i],seq[k] = seq[k],seq[i]
            return seq

    def bubbleSort(seq):
            """冒泡排序"""
            size = len(seq)
            for i in range(1,size):
                    for j in range(0,size-i):
                            if seq[j+1] < seq[j]:
                                    seq[j+1],seq[j] = seq[j],seq[j+1]
            return seq

    def _divide(seq, low, high):
            """快速排序划分函数"""
            tmp = seq[low]
            while low != high:
                    while low < high and seq[high] >= tmp: high -= 1
                    if low < high:
                            seq[low] = seq[high]
                            low += 1
                    while low < high and seq[low] <= tmp: low += 1
                    if low < high:
                            seq[high] = seq[low]
                            high -= 1
            seq[low] = tmp
            return low

    def _quickSort(seq, low, high):
            """快速排序辅助函数"""
            if low >= high: return
            mid = _divide(seq, low, high)
            _quickSort(seq, low, mid - 1)
            _quickSort(seq, mid + 1, high)

    def quickSort(seq):
            """快速排序包裹函数"""
            size = len(seq)
            _quickSort(seq, 0, size - 1)
            return seq

    def merge(seq, left, mid, right):
            tmp = []
            i, j = left, mid
            while i < mid and j <= right:
                    if seq[i] < seq[j]:
                            tmp.append(seq[i])
                            i += 1
                    else:
                            tmp.append(seq[j])
                            j += 1
            if i < mid: tmp.extend(seq[i:])
            if j <= right: tmp.extend(seq[j:])
            seq[left:right+1 = tmp[0:right-left+1]

    def _mergeSort(seq, left, right):
            if left == right:
                     return
            else:
                    mid = (left + right) / 2
                    _mergeSort(seq, left, mid)
                    _mergeSort(seq, mid + 1, right)
                    merge(seq, left, mid+1, right)
    #二路并归排序
    def
    mergeSort(seq):
            size = len(seq)
            _mergeSort(seq, 0, size - 1)
            return seq

    if __name__ == '__main__':
            s = [random.randint(0,100) for i in range(0,20)
            print s
            print "\n"
            print directSelectSort(copy(s))
            print directInsertSort(copy(s))
            print bubbleSort(copy(s))
            print quickSort(copy(s))
            print mergeSort(copy(s))

  • 相关阅读:
    黄聪:HBuilder左侧项目管理器如何不与标签页一起自动切换
    黄聪:is_file和file_exists效率比较
    黄聪:HBuilder复制PHP项目后,【转到定位】功能失效
    黄聪:jquery.bootgrid表格插件有的属性(visibleInSelection、cssClass、headerCssClass、headerAlign)不能识别的解决办法
    黄聪:PHP如何实现延迟一定时间后自动刷新当前页面、自动跳转header("refresh:1;url={$url}");
    黄聪:bootstrapValidator验证成功,按钮变灰却无法提交的问题
    黄聪:如何使用钩子定制WordPress添加媒体界面,去除不需要的元素
    黄聪:jquery+Datatables出现数据过长,表格不自动换行,columns设置width失效的办法
    黄聪:Jquery+DataTables插件,如何在ajax调用服务器数据后,自动给tr添加id属性
    黄聪:JQUERY判断操作CHECKBOX选中、取消选中、反选、第二次无法选中的问题
  • 原文地址:https://www.cnblogs.com/xupeizhi/p/2602864.html
Copyright © 2011-2022 走看看