zoukankan      html  css  js  c++  java
  • 各种排序

    import random
    import datetime
    import copy
    
    def bubbleSort(data):
        l1 = len(data)-1
        for i in xrange(l1,0,-1):
            for j in xrange(i):
                if(data[j]>data[j+1]):
                    data[j],data[j+1] = data[j+1],data[j]
    
    def selectionSort(data):
        l = len(data)
        l1 = l-1
        for i in xrange(l1):
            k,min = i,data[i]
            for j in xrange(i,l):
                if(data[j]<min):
                    k,min = j,data[j]
            if(i<>k):
                data[i],data[k] = data[k],data[i]
    
    def insertSort(data):
        l = len(data)
        l1 = l-1
        for i in xrange(1,l):
            j = i-1
            temp = data[i]
            while(j>=0 and data[j]>temp):
                data[j+1] = data[j]
                j = j-1
            if(j<>i-1):
                data[j+1] = temp
    
    def shellSort(data,n=None):
        l = len(data)
        if(n==None):
            n = l /2
        if(n%2==0):
            n = n+1
        for i in xrange(n):
            newdata = data[i:len(data):n]
            insertSort(newdata)
            data[i:len(data):n] = newdata
        d = n/2
        if(d>0):
            if(d%2==0):
                d = d+1
            shellSort(data,d)
    
    
    def quickSort(data,low=0,high=None):
        if(high==None):
            high = len(data) - 1
        if(low<high):
            i,j,key = low,high,data[low]
            while(i<j):
                while(i<j and data[j]>key):
                    j = j-1
                if(i<j):
                    data[i] = data[j]
                    i = i+1
                while(i<j and data[i]<key):
                    i = i+1
                if(i<j):
                    data[j] = data[i]
                    j = j-1
            data[i] = key
            quickSort(data,low,i-1)
            quickSort(data,i+1,high)
    
    
    data = [random.randint(0,65536) for i in xrange(1000)]
    
    def sortPerform(sortFunc):    
        newdata = copy.deepcopy(data)
        t1 = datetime.datetime.now()
        sortFunc(newdata)
    
        t2 = datetime.datetime.now()
        if(len(newdata)<50):
            print newdata
        print(sortFunc.__name__+":"+str(t2-t1))
    
    sortPerform(quickSort)
    sortPerform(bubbleSort)
    sortPerform(shellSort)
    sortPerform(selectionSort)
    sortPerform(insertSort)
    raw_input()
  • 相关阅读:
    oracle 存储过程
    IBM Http Server 7 下载安装
    设置linux静态IP地址
    was7补丁下载安装
    JDBC提供程序和数据源配置
    db2替换激活永久lic
    db2基本命令
    db2创建数据库
    linux解压命令
    linux下安装db2_v9.7
  • 原文地址:https://www.cnblogs.com/fenix/p/2531139.html
Copyright © 2011-2022 走看看