欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python算法學(xué)習(xí)之桶排序算法實例(分塊排序)

 更新時間:2013年12月18日 10:02:16   作者:  
本代碼介紹了python算法學(xué)習(xí)中的桶排序算法實例,大家參考使用吧

復(fù)制代碼 代碼如下:

# -*- coding: utf-8 -*-

def insertion_sort(A):
    """插入排序,作為桶排序的子排序"""
    n = len(A)
    if n <= 1:
        return A
    B = [] # 結(jié)果列表
    for a in A:
        i = len(B)
        while i > 0 and B[i-1] > a:
            i = i - 1
        B.insert(i, a);
    return B

def bucket_sort(A):
    """桶排序,偽碼如下:
    BUCKET-SORT(A)
    1  n ← length[A] // 桶數(shù)
    2  for i ← 1 to n
    3    do insert A[i] into list B[floor(nA[i])] // 將n個數(shù)分布到各個桶中
    4  for i ← 0 to n-1
    5    do sort list B[i] with insertion sort // 對各個桶中的數(shù)進(jìn)行排序
    6  concatenate the lists B[0],B[1],...,B[n-1] together in order // 依次串聯(lián)各桶中的元素

    桶排序假設(shè)輸入由一個隨機(jī)過程產(chǎn)生,該過程將元素均勻地分布在區(qū)間[0,1)上。
    """
    n = len(A)
    buckets = [[] for _ in xrange(n)] # n個空桶
    for a in A:
        buckets[int(n * a)].append(a)
    B = []
    for b in buckets:
        B.extend(insertion_sort(b))
    return B

if __name__ == '__main__':
    from random import random
    from timeit import Timer

    items = [random() for _ in xrange(10000)]

    def test_sorted():
        print(items)
        sorted_items = sorted(items)
        print(sorted_items)

    def test_bucket_sort():
        print(items)
        sorted_items = bucket_sort(items)
        print(sorted_items)

    test_methods = [test_sorted, test_bucket_sort]
    for test in test_methods:
        name = test.__name__ # test.func_name
        t = Timer(name + '()', 'from __main__ import ' + name)
        print(name + ' takes time : %f' % t.timeit(1))

相關(guān)文章

  • opencv對多種顏色小球的形狀及位置判斷方式

    opencv對多種顏色小球的形狀及位置判斷方式

    在這段時間參加了一個競賽,寫下了這個代碼,但是總感覺有一些地方是不完善!這是一個關(guān)于使用opencv庫判斷顏色小球形狀及位置的功能實現(xiàn),其中也參考了一些前輩的代碼,希望能對迷茫中的小伙幫有所幫助
    2022-11-11
  • 對python 矩陣轉(zhuǎn)置transpose的實例講解

    對python 矩陣轉(zhuǎn)置transpose的實例講解

    下面小編就為大家分享一篇對python 矩陣轉(zhuǎn)置transpose的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python?dateutil庫簡化日期時間處理利器使用場景實踐

    Python?dateutil庫簡化日期時間處理利器使用場景實踐

    在Python中,處理日期和時間是常見的任務(wù)之一,dateutil庫是Python標(biāo)準(zhǔn)庫中datetime模塊的擴(kuò)展,提供了許多方便的工具和函數(shù),簡化了日期和時間的操作
    2023-12-12
  • 30秒輕松實現(xiàn)TensorFlow物體檢測

    30秒輕松實現(xiàn)TensorFlow物體檢測

    這篇文章主要為大家詳細(xì)介紹了30秒輕松實現(xiàn)TensorFlow物體檢測,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 利用Python解決Excel問題的最佳方案總結(jié)

    利用Python解決Excel問題的最佳方案總結(jié)

    python處理excel文件有很多方法,最開始接觸的是xlrd、xlsxwriter模塊,分別用于excel文件的讀、寫,后來又學(xué)習(xí)了openpyxl模塊,可以同時完成excel文件的讀、寫,下面這篇文章主要給大家介紹了關(guān)于利用Python解決Excel問題的最佳方案,需要的朋友可以參考下
    2023-04-04
  • python分割文件的常用方法

    python分割文件的常用方法

    這篇文章主要介紹了python分割文件的常用方法,包括指定分割大小、按行分割與分割合并等技巧,非常實用,需要的朋友可以參考下
    2014-11-11
  • Python 如何手動編寫一個自己的LRU緩存裝飾器的方法實現(xiàn)

    Python 如何手動編寫一個自己的LRU緩存裝飾器的方法實現(xiàn)

    本文主要介紹了Python如何手動編寫一個自己的LRU緩存裝飾器,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 提升Python Scrapy庫數(shù)據(jù)采集速度實現(xiàn)高效爬蟲

    提升Python Scrapy庫數(shù)據(jù)采集速度實現(xiàn)高效爬蟲

    Scrapy是一個強(qiáng)大而靈活的Python爬蟲框架,被廣泛用于數(shù)據(jù)采集、網(wǎng)站抓取和網(wǎng)絡(luò)爬蟲開發(fā),本文將深入介紹Scrapy的功能和用法,并提供豐富的示例代碼,幫助更好地理解和應(yīng)用
    2023-11-11
  • python 多線程死鎖問題的解決方案

    python 多線程死鎖問題的解決方案

    這篇文章主要介紹了python 多線程死鎖問題的解決方案,幫助大家更好的理解和學(xué)習(xí)python 鎖,感興趣的朋友可以了解下
    2020-08-08
  • 基于Python編寫一個B站全自動抽獎的小程序

    基于Python編寫一個B站全自動抽獎的小程序

    本文將利用Python編寫一個B站全自動抽獎的小程序,可以實時監(jiān)控自己關(guān)注的UP主,如果關(guān)注的UP主中有人發(fā)布了抽獎的動態(tài),就自動參與這個抽獎。這樣就能不錯過任何一個可以暴富的機(jī)會了。需要的可以參考一下
    2022-03-03

最新評論