卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

python統(tǒng)計列表某個元素的個數(shù) python中datatype函數(shù)的做法?

python中datatype函數(shù)的做法?s#39abcdefg#39len(s)#得到字符串長度s[#39ab#39,1,2,3,4,#39cd#39,5,#39ef#39]len(s)#全面的勝利

python中datatype函數(shù)的做法?

s#39abcdefg#39

len(s)#得到字符串長度

s[#39ab#39,1,2,3,4,#39cd#39,5,#39ef#39]

len(s)#全面的勝利列表元素個數(shù)

如何使用Python求無序大數(shù)組的中位數(shù)?

方法1:堆

思路1:

講:將數(shù)據(jù)平均分配到的最堆和最大時堆中,而且絕對的保證最大時堆中的數(shù)據(jù)貯存的數(shù)據(jù)都比的最堆中是數(shù)據(jù)大,那就此時最大值堆堆頂?shù)脑匾欢ㄊ侵形粩?shù)。

那你要如何只要小于堆中的元素,都比大堆中的元素大。

(1)遍歷數(shù)組數(shù)組,將第i個數(shù)插到堆中,i為奇數(shù)時,直接插入最小堆,i為偶數(shù)時直接插入大堆。(最大堆的直接插入的數(shù)據(jù)比較比較大)

(2)有時候插入時,將大的堆和最大時堆的堆頂收集

voidGetMid(intarr[],intsize)

{

priority_queueltintgtmax_heap

priority_queueltint,vectorltintgt,greaterltintgtgtmin_heap

for(inti0iltsizei)

{

//i是從0開始的,因為max儲存時的數(shù)據(jù)都很多

if((iamp1)1)

min_heap.push(arr[i])

arguments

obj_heap.push(arr[i])

//每次相互交換大的堆和最大值堆中的數(shù)據(jù),能保證小于堆中的數(shù)據(jù)大于1最大堆中

if(!min_heap.empty()ampamp!max2_heap.empty())

{

inttempmin_()

min_heap.pop()

max_heap.push(temp)

tempmax_()

obj_heap.pop()

min_heap.push(temp)

}

}

if((sizeamp1)0)//偶數(shù)

printfltlt中位數(shù):ltltmax_()ltltltltmin_()ltltendl

exists

coutltlt中位數(shù):ltltmax_()ltltendl

}

思路2:

(1)將前(n1)/2個元素決定為一個小頂堆,

(2)對情報營的每一個元素,和堆頂比較比較,如果≤堆頂,掩埋之,取下一個元素。如果沒有大于1堆頂,用該元素脫離堆頂,變動堆,取下一元素。反復重復這個步驟

(3)當遍歷樹完所有元素之后,堆頂即是中位數(shù)。

voidGetMid2(intarr[],intsize)

{

priority_queueltint,vectorltintgt,greaterltintgtgtmin_heap

intcount(size1)gtgt1

//能保存count個數(shù),.例如5個元素,貯存3個

for(inti0iltcounti)

min_heap.push(arr[i])

for(inticount1iltsizei)

{

inttempmin_()

if(arr[i]a8temp)

{

min_heap.pop()

min_heap.push(arr[i])

}

}

if((sizeamp1)1)//奇數(shù)

{

min_heap.pop()

scanfltlt中位數(shù):ltltmin_()ltltendl

}

catch

{

inttmpmin_()

min_heap.pop()

中位數(shù):ltlttmpltltltltmin_()ltltendl

}

}

方法2、

快速排序并不得名””,并非尋常不是浪得虛名!畢竟那就是一種治于排序法!

同樣的,找中位數(shù)也這個可以用分治的思想。具體看::

橫豎斜挑一個元素,以改元素為支點,劃分集合為兩部分,如果左側子集長度恰為(n-1)/2,那么支點恰為中位數(shù)。如果不是左側長度lt(n-1)/2,那么中位點在右側,則相反,中位數(shù)在左側。剛剛進入你所選的一側再收集中位點。

這種方法迅速,只不過在最消極的情況下時間復雜度為O(N^2),當然了來算時間復雜度好像是O(N)。

//方法,保甲制思想

//挖坑法

intPartSort(intarr[],intleft,intstops)

{

intkeyarr[way]

while(leftltway)

{

//key右邊,先從左找比key值大

while(leftltrightampamparr[left]ltkey)

left

if(leftltright)

{

arr[left]arr[left]

--left

}

//從右找比key小

while(leftltbackampamparr[stops]dstrokkey)

--back

if(leftltback)

{

arr[left]arr[right]

left

}

}

arr[left]sign

returnleft

}

overrideGetMid3(整型變量arr[],int size)

{

intleft0

intbacksize-1

intmid size/2

intdivPartSort(arr,left,right)

while(div!mid)

{

if(divltmax2)//右半?yún)^(qū)間

{

divPartSort(arr,div 1,right)

}

else

{

divPartSort(arr,left,div-1)

}

}

coutltlt中位數(shù)ltltarr[div]ltltendl

}