最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python找出最小的K個(gè)數(shù)實(shí)例代碼

 更新時(shí)間:2018年01月04日 11:20:04   作者:明柳夢(mèng)少  
這篇文章主要介紹了Python找出最小的K個(gè)數(shù)實(shí)例代碼,簡(jiǎn)單分析了實(shí)現(xiàn)思路,冒泡法和partition思想,具有一定借鑒價(jià)值,需要的朋友可以參考下

題目描述

輸入n個(gè)整數(shù),找出其中最小的K個(gè)數(shù)。例如輸入4,5,1,6,2,7,3,8這8個(gè)數(shù)字,則最小的4個(gè)數(shù)字是1,2,3,4,。

這個(gè)題目完成的思路有很多,很多排序算法都可以完成既定操作,關(guān)鍵是復(fù)雜度性的考慮。以下幾種思路當(dāng)是筆者拋磚引玉,如果讀者有興趣可以自己再使用其他方法一一嘗試。

思路1:利用冒泡法

臨近的數(shù)字兩兩進(jìn)行比較,按照從小到大的順序進(jìn)行交換,如果前面的值比后面的大,則交換順序。這樣一趟過(guò)去后,最小的數(shù)字被交換到了第一位;然后是次小的交換到了第二位,。。。,依次直到第k個(gè)數(shù),停止交換。返回lists的前k個(gè)數(shù)(lists[0:k],前閉后開(kāi))

思路2:使用快排中的partition思想。

①我們?cè)O(shè)定partition函數(shù)的哨兵為key=lists[left],在partition函數(shù)中完成一輪比較的結(jié)果是,比key大的數(shù)都在其右邊,比key小的數(shù)放在其左邊。完成該輪后返回其left=right時(shí)left的值。

②我們判斷l(xiāng)eft的值是比k大還是小:

如果left的值比k大,說(shuō)明上輪partition之后,lists中前l(fā)eft個(gè)小的數(shù)在左邊,其余的數(shù)在其右邊,我們還需要把尋找范圍縮小,下次找的時(shí)候只在數(shù)組前面left個(gè)數(shù)中找了。

如果left的值比k小,說(shuō)明上輪partition之后,前l(fā)eft個(gè)數(shù)找的太少了,我們需要再往數(shù)組的后面找。

# -*- coding: utf-8 -*- 
""" 
Date: Tue Sep 19 10:50:11 2017 
 
Created by @author: xiaoguibao 
 
E-mail: mingliumengshao@163.com 
 
Content: 找最小的k個(gè)數(shù) 
 
""" 
def function1(lists,k): 
#  冒泡法 
  length = len(lists) 
  for i in range(k): 
    for j in range(i+1,length): 
      if lists[i] > lists[j]: 
        lists[j],lists[i] = lists[i],lists[j] 
  return lists[0:k] 
 
""" 
思路2 包括2個(gè)部分function2_partion和function2 
""" 
 
def function2_partion(lists,left,right): 
  #劃分函數(shù)處理部分 
  key = lists[left] 
  while left < right: 
    while left < right and lists[right] >= key: 
      right -= 1 
    lists[left] = lists[right] 
    while left < right and lists[left] <= key: 
      left += 1 
    lists[right] = lists[left] 
  lists[right] = key 
  return left 
def function2(lists,k): 
  #劃分法主要函數(shù)部分 
  length = len(lists) 
  left = 0 
  right = length - 1 
  index = function2_partion(lists,left,right) 
  while k!=index: 
    if index > k-1: 
      right = index-1 
    else: 
      left = index+1 
    index = function2_partion(lists,left,right)  
  return lists[0:k] 
 
def main(): 
  lists = [1,1,6,4,11,9,2,10,3] 
#  print "思路一(冒泡法):",function1(lists,8) 
  print "思路二(劃分法):",function2(lists,8) 
if __name__=="__main__": 
  main() 

總結(jié)

以上就是本文關(guān)于Python找出最小的K個(gè)數(shù)實(shí)例代碼的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!

相關(guān)文章

  • 關(guān)于Pytorch的MLP模塊實(shí)現(xiàn)方式

    關(guān)于Pytorch的MLP模塊實(shí)現(xiàn)方式

    今天小編就為大家分享一篇關(guān)于Pytorch的MLP模塊實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • Pandas中Dataframe合并的實(shí)現(xiàn)

    Pandas中Dataframe合并的實(shí)現(xiàn)

    本文主要介紹了如何使用Pandas來(lái)合并Series和Dataframe,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • python控制nao機(jī)器人身體動(dòng)作實(shí)例詳解

    python控制nao機(jī)器人身體動(dòng)作實(shí)例詳解

    這篇文章主要為大家詳細(xì)介紹了python控制nao機(jī)器人身體動(dòng)作實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • TensorFlow卷積神經(jīng)網(wǎng)絡(luò)MNIST數(shù)據(jù)集實(shí)現(xiàn)示例

    TensorFlow卷積神經(jīng)網(wǎng)絡(luò)MNIST數(shù)據(jù)集實(shí)現(xiàn)示例

    這篇文章主要介紹了TensorFlow卷積神經(jīng)網(wǎng)絡(luò)MNIST數(shù)據(jù)集的實(shí)現(xiàn)示例的過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-11-11
  • pycharm三個(gè)有引號(hào)不能自動(dòng)生成函數(shù)注釋的問(wèn)題

    pycharm三個(gè)有引號(hào)不能自動(dòng)生成函數(shù)注釋的問(wèn)題

    這篇文章主要介紹了解決pycharm三個(gè)有引號(hào)不能自動(dòng)生成函數(shù)注釋的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Permission denied的解決方法

    Permission denied的解決方法

    這篇文章主要介紹了Permission denied的解決方法,希望能給你帶來(lái)幫助
    2021-08-08
  • Python批量生成Excel案例數(shù)據(jù)集的方法詳解

    Python批量生成Excel案例數(shù)據(jù)集的方法詳解

    在數(shù)據(jù)分析的世界里,數(shù)據(jù)是核心,而如何高效地生成和處理數(shù)據(jù)則成為每位數(shù)據(jù)分析師必備的技能之一,今天,我們要探討一個(gè)有趣的話題——“造數(shù)”,所以本文給大家介紹了Python辦公自動(dòng)化,批量生成Excel案例數(shù)據(jù)集,需要的朋友可以參考下
    2024-12-12
  • CentOS 安裝 Python 3.11.9完整步驟

    CentOS 安裝 Python 3.11.9完整步驟

    在CentOS上安裝Python3.11.9并替換系統(tǒng)默認(rèn)Python版本的步驟,包括安裝依賴、下載解壓源碼、編譯安裝、更新默認(rèn)版本、驗(yàn)證安裝,并提供注意事項(xiàng)和創(chuàng)建虛擬環(huán)境的建議,本文分步驟給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2024-11-11
  • Python中矩陣創(chuàng)建和矩陣運(yùn)算方法

    Python中矩陣創(chuàng)建和矩陣運(yùn)算方法

    今天小編就為大家分享一篇Python中矩陣創(chuàng)建和矩陣運(yùn)算方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • Python對(duì)PDF文件的常用操作方法詳解

    Python對(duì)PDF文件的常用操作方法詳解

    PDF是Portable?Document?Format的縮寫(xiě),這類文件通常使用`.pdf`作為其擴(kuò)展名。在日常開(kāi)發(fā)工作中,最容易遇到的就是從PDF中讀取文本內(nèi)容以及用已有的內(nèi)容生成PDF文檔這兩個(gè)任務(wù)。本文為大家介紹了幾個(gè)Python中常見(jiàn)的PDF操作,需要的可以參考一下
    2022-05-05

最新評(píng)論

满洲里市| 乌拉特后旗| 丰台区| 华安县| 榆树市| 凌云县| 平乡县| 巴塘县| 佳木斯市| 阆中市| 陇西县| 阿荣旗| 石嘴山市| 股票| 依安县| 镇原县| 新乡县| 康保县| 施秉县| 新巴尔虎左旗| 内江市| 宜兴市| 北碚区| 五常市| 南部县| 长治县| 临沂市| 乌鲁木齐县| 达孜县| 建阳市| 光山县| 革吉县| 灵武市| 苏尼特左旗| 涿鹿县| 井陉县| 神池县| 锡林郭勒盟| 延安市| 洛扎县| 阳江市|