国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python找出最小的K個數實例代碼

Python找出最小的K個數實例代碼

2020-12-31 00:30明柳夢少 Python

這篇文章主要介紹了Python找出最小的K個數實例代碼,簡單分析了實現思路,冒泡法和partition思想,具有一定借鑒價值,需要的朋友可以參考下

題目描述

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

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

思路1:利用冒泡法

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

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

①我們設定partition函數的哨兵為key=lists[left],在partition函數中完成一輪比較的結果是,比key大的數都在其右邊,比key小的數放在其左邊。完成該輪后返回其left=right時left的值。

②我們判斷left的值是比k大還是小:

如果left的值比k大,說明上輪partition之后,lists中前left個小的數在左邊,其余的數在其右邊,我們還需要把尋找范圍縮小,下次找的時候只在數組前面left個數中找了。

如果left的值比k小,說明上輪partition之后,前left個數找的太少了,我們需要再往數組的后面找。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# -*- coding: utf-8 -*-
"""
Date: Tue Sep 19 10:50:11 2017
 
Created by @author: xiaoguibao
 
E-mail: mingliumengshao@163.com
 
Content: 找最小的k個數
 
"""
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個部分function2_partion和function2
"""
 
def function2_partion(lists,left,right):
  #劃分函數處理部分
  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):
  #劃分法主要函數部分
  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()

總結

以上就是本文關于Python找出最小的K個數實例代碼的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

原文鏈接:http://blog.csdn.net/u010636181/article/details/78417977

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 激情综合五| 操操网站| 国产在线一区二区 | 国产区视频在线观看 | 91麻豆精品国产91久久久更新资源速度超快 | av网站免费观看 | 黄色大片在线播放 | 最近日本韩国高清免费观看 | 久久av网| 亚洲欧美综合精品久久成人 | 亚洲欧洲日韩 | 久久精品一 | 一级片少妇 | 日韩中文字幕在线观看 | 99re热精品视频 | 2级毛片 | 毛片在线视频 | 久久久午夜爽爽一区二区三区三州 | 日韩高清一区 | 亚洲日本va中文字幕 | 天天色天天草 | 久久久久久国产一级毛片高清版 | 久久精品亚洲 | 久久久久久一区二区三区 | 成人aaa毛片 | 丰满白嫩老熟女毛片 | 亚洲成av人片一区二区梦乃 | 激情欧美一区二区三区中文字幕 | 自拍在线 | 亚洲精品国偷拍自产在线观看 | 老牛嫩草一区二区三区眼镜 | 久久精品一区二区三区四区 | 亚洲视频欧洲视频 | 亚洲欧美在线一区 | 国产视频一区二区在线 | 日韩成人免费 | 99免费观看 | 91精品久久久久久久久久 | 中文字幕视频二区 | 欧美国产日韩在线观看 | 欧美成人精品一区二区男人看 |