• python排序(冒泡, 快速)


    之前用java时学习的一些基础算法,今天在python上也研究下。

    1. 冒泡排序

    算法步骤

      50   30   70  90 10

      1)50 跟 30 比不用交换。

      2)步数+1, 30 跟70比交换, 50 70 30 90 10。

      3)步数+1, 30跟90比交换, 50 70 90 30 10。

      4)步数+1, 30跟10比不用交换, 50 70 90 30 10.

      即:一次比较, 排出最小一个元素

    再来张图看看(网上找的)

    # -*- coding: UTF-8 -*-
    import random
    import datetime
    def bubble_sort(array): for i in range(len(array)): for j in range(i,len(array)): if array[j] < array[i]: tmp = array[j] array[j] = array[i] array[i] = tmp def getRandomList(): array = [] for i in range(1, 10000): array.append(i) random.shuffle(array)

      return array if __name__ == '__main__': array = getRandomList() t1 = datetime.datetime.now() bubble_sort(array) t2 = datetime.datetime.now() print t2 - t1 ########## 0:00:12.298000 [Finished in 12.5s]

    2. 快速排序:

      

      推荐看看这个视频:http://v.youku.com/v_show/id_XMzMyODk4NTQ4.html

    def getRandomList():
        array = []
        for i in range(1, 10000):
            array.append(i)
        random.shuffle(array)
    
        return array
    
    def subSort(array,low,high):
        key = array[low]
        while low < high:
            while low < high and array[high] >= key:
                high -= 1
            while low < high and array[high] < key:
                array[low] = array[high]
                low += 1
                array[high] = array[low]
        array[low] = key
        return low
    
    
    def quickSort(array,low,high):
         if low < high:
            index = subSort(array,low,high)
            quickSort(array,low,index )
            quickSort(array,index+1,high)
    
    if __name__ == '__main__':
        array = getRandomList()
        t1 = datetime.datetime.now()
        # bubble_sort(array)
        quickSort(array, 0, len(array)-1)
        t2 = datetime.datetime.now()
        print t2 - t1
    #######
    0:00:00.047000
    [Finished in 0.2s]

    从结果看两个速度差距不是一般大啊!!!!

  • 相关阅读:
    Mysql 交集、并集、差集、行转列、列转行
    Scala隐式转换
    ES添加elasticsearch-sql插件
    ES添加elasticsearch-analysis-ik分词器
    ES添加Head插件
    ES操作详解
    ES集群安装
    Scala上下界以及比较器Ordered
    Java对象比较
    解方程(来自学长的“遗产”)
  • 原文地址:https://www.cnblogs.com/gcm688/p/5224367.html
Copyright © 2020-2023  润新知