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

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

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

復(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個(gè)數(shù)分布到各個(gè)桶中
    4  for i ← 0 to n-1
    5    do sort list B[i] with insertion sort // 對(duì)各個(gè)桶中的數(shù)進(jìn)行排序
    6  concatenate the lists B[0],B[1],...,B[n-1] together in order // 依次串聯(lián)各桶中的元素

    桶排序假設(shè)輸入由一個(gè)隨機(jī)過程產(chǎn)生,該過程將元素均勻地分布在區(qū)間[0,1)上。
    """
    n = len(A)
    buckets = [[] for _ in xrange(n)] # n個(gè)空桶
    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對(duì)多種顏色小球的形狀及位置判斷方式

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

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

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

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

    Python?dateutil庫簡(jiǎn)化日期時(shí)間處理利器使用場(chǎng)景實(shí)踐

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

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

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

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

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

    python分割文件的常用方法

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

    Python 如何手動(dòng)編寫一個(gè)自己的LRU緩存裝飾器的方法實(shí)現(xiàn)

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

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

    Scrapy是一個(gè)強(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編寫一個(gè)B站全自動(dòng)抽獎(jiǎng)的小程序

    基于Python編寫一個(gè)B站全自動(dòng)抽獎(jiǎng)的小程序

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

最新評(píng)論