今天學習演算法中各類排序法,發現時間複雜度基本上都是o(n**2)
突發奇想到乙個比較浪費空間但省時間的排序演算法,其實也不知道意義何在,但記錄一下博君一笑
**如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#需要排序的a列表
alist =
[433
,198
,389
,456
,216,21
,133
,495
,262
,249
,208
,471
,402
,425
,156
,496
,245
,184
,299
,457
]max_num = alist[0]
# 建立乙個不可能值,即需要排序的列表中不可能存在的值,用於初始化b列表
# 由於alist我是用randint生成的,所以暫且將該值設為0
impossablenum =
0#儲存最終結果的c列表
clist =
# 取a列表中最大值max
for i in
range
(len
(alist)):
# 時間複雜度n
if max_num < alist[i]
: max_num = alist[i]
# 生成max_num大小的空列表,和max_num大小的"重複"列表
blist =
[impossablenum for i in
range
(max_num +1)
]times =[0
for i in
range
(max_num +1)
]# 用來記錄某乙個值的重複次數,個人認為還能優化,但太懶了
# 將a列表中的每個值放到b列表中,以該值為下標的位置,若重複則times列表記錄重複次數
# 此時b列表中元素已完成排序,但還需精簡和重複值的新增
for i in
range
(len
(alist)):
# 時間複雜度n
n = alist[i]
if blist[n]
== impossablenum:
blist[n]
= n else
: times[n]+=1
# 將b列表中的有用資料按順序放到c列表,並將重複值按照次數新增
for i in
range
(max_num +1)
:# 時間複雜度未知,假設為m
if blist[i]
!= impossablenum:
while times[i]
>=0:
) times[i]-=1
print
(clist)
差異可能是重要的
3位可儲存8個值。n位可儲存2 n值。因為乙個位元組的8位,乙個位元組可以存放2 8 256 的值。變數的大小對大量的資訊可以儲存 這是更大的變數可以容納更多的限制。我們將進一步解決這個問題的時候,我們進入不同型別的變數。第二,電腦有乙個有限的可用記憶體。每一次我們宣告乙個變數,那游離的記憶是只要用...
你可能是自由的
序 一直都愛吃甜,甜到微微的澀。一直都想寫作,寫到天昏地暗。一直追逐自由,飛到天涯海角。孤獨的牧羊人在廣廖的草原牧著他的羊兒們,一生孤獨的他在3歲那年,父母已離開人世,剩下相依為命的奶奶也在10歲時離他而去,留下的只有兩頭羊兒。那一年,他哭的是那麼傷心,周圍嬉皮笑臉的人帶著乙個悲傷的面具,假惺惺的來...
這可能是不可取的!
雖然消極期望功能的一部分,我們給它乙個整數而不是。然而,由於分數具有建構函式的願意接受乙個整數,編譯器將使用此建構函式隱式轉換為整數6轉化為分數的物件,然後將其複製到makenegative 初始化引數f.因此,上面的程式列印 6 1 這種隱式轉換為各種初始化 直接 統一和複製 用於隱式會話的建構函...