日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

排序算法-08基数排序(python实现)

發(fā)布時間:2024/4/11 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 排序算法-08基数排序(python实现) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

基數(shù)排序

  • 前言
    • 這就是整個排序算法的最后一篇了,再深入的后來提出的排序算法基本上是基于這8中基本的排序算法,不做過多贅述。
  • 概述
    • 這是完全不同于之前的排序理念的一種排序方式,它是非基于比較的整形數(shù)據(jù)排序算法。
    • 基本原理是將整數(shù)按照位數(shù)切割為不同的數(shù)字,然后按照位數(shù)比較。
    • 這種排序不一定只適合整數(shù),有些數(shù)據(jù)格式有內(nèi)含整數(shù)的可能性。
  • 算法思路
    • 把待比較的所有整數(shù)統(tǒng)一化為同樣的數(shù)位長度,數(shù)位不足前面補0,然后從最低位開始,依次排序,顯然,按照這個步驟,待排序到最后一位數(shù)據(jù)一定有序。
  • 算法評價

    • 復雜度分析

      排序名稱最好情況最壞情況平均情況
      基數(shù)排序O(nlog2n)O(nlog2n)O(nlog2n)
    • 穩(wěn)定性
      • 算法穩(wěn)定。
# -*- coding:UTF-8 -*- """ 本模塊實現(xiàn)了一維整形數(shù)的基數(shù)排序 """ def RadixSort(data=[1, 2, 3, 4, 5]):def getMaxBit(data):'''求出最大數(shù)的位數(shù):param data::return:'''maxData = max(data)bitsNum = 0while maxData:bitsNum += 1maxData //= 10return bitsNumdef getDigit(number, n):'''取number第n位數(shù)字:param number::param n::return:'''p = 1while n > 1:n -= 1p *= 10return number // p % 10length = len(data)bucket = [0]*lengthfor d in range(1, getMaxBit(data)+1):count = [0]*10for i in range(length):count[getDigit(data[i], d)] += 1for i in range(1, 10):count[i] += count[i-1]for i in range(0, length)[::-1]:k = getDigit(data[i], d)bucket[count[k] - 1] = data[i]count[k] -= 1for i in range(0, length):data[i] = bucket[i]print(data)return Noneif __name__ == '__main__':testData = [50, 123, 456, 187, 4, 11, 100]RadixSort(testData)

具體可以查看我的github。?

總結(jié)

以上是生活随笔為你收集整理的排序算法-08基数排序(python实现)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。