国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python實現查找數組中任意第k大的數字算法示例

2020-02-16 00:50:11
字體:
來源:轉載
供稿:網友

本文實例講述了Python實現查找數組中任意第k大的數字算法。分享給大家供大家參考,具體如下:

模仿partion方法,當high=low小于k的時候,在后半部分搜索,當high=low大于k的時候,在前半部分搜索。與快排不同的是,每次都減少了一半的排序。

def partitionOfK(numbers, start, end, k):  if k < 0 or numbers == [] or start < 0 or end >= len(numbers) or k > end:    return None  low = start  high = end  key = numbers[start]  while low < high:    while low < high and numbers[high] >= key:      high -= 1    numbers[low] = numbers[high]    while low < high and numbers[low] <= key:      low += 1    numbers[high] = numbers[low]  numbers[low] = key  if low < k:    return partitionOfK(numbers, start + 1, end, k)  elif low > k:    return partitionOfK(numbers, start, end - 1, k)  else:    return numbers[low]numbers = [3,5,6,7,2,-1,9,3]print(sorted(numbers))print(partitionOfK(numbers, 0, len(numbers) - 1, 5))

輸出:返回了第五大排序的數字

[-1, 2, 3, 3, 5, 6, 7, 9]
6

PS:這里再為大家推薦一款關于排序的演示工具供大家參考:

在線動畫演示插入/選擇/冒泡/歸并/希爾/快速排序算法過程工具:
http://tools.jb51.net/aideddesign/paixu_ys

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數據結構與算法教程》、《Python列表(list)操作技巧總結》、《Python編碼操作技巧總結》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程》

希望本文所述對大家Python程序設計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 托克逊县| 崇阳县| 宁城县| 庆元县| 奉节县| 蒙阴县| 嘉义县| 弥勒县| 平遥县| 卫辉市| 洛隆县| 桦南县| 汉源县| 新沂市| 大化| 竹北市| 新民市| 鸡西市| 信丰县| 阿拉善盟| 孙吴县| 普兰县| 江西省| 吉木萨尔县| 佛山市| 涿州市| 永川市| 东至县| 冕宁县| 南涧| 安图县| 重庆市| 台前县| 措美县| 东城区| 安西县| 砀山县| 新乡县| 阆中市| 锡林郭勒盟| 贵定县|