国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

Python3實現(xiàn)折半查找

1. 簡介折半查找,也稱二分罰查找,是一種針對有序數(shù)列進行查找的方法。與順序查找相比,折半查找算法更高效。具體步驟如下:1)對一個無序數(shù)列,首先要排序;2)然后設(shè)定頭尾兩個指針,計算中間位置mid

1. 簡介

折半查找,也稱二分罰查找,是一種針對有序數(shù)列進行查找的方法。與順序查找相比,折半查找算法更高效。具體步驟如下:

1)對一個無序數(shù)列,首先要排序;

2)然后設(shè)定頭尾兩個指針,計算中間位置mid (頭 尾) / 2;

3)用中間位置數(shù)值元素和目標值比較,如果中間元素正好是要查找的元素,則搜索過程結(jié)束;如果目標元素大于或者小于中間元素,則在數(shù)列大于或小于中間元素的那一半中繼續(xù)查找,并且從新計算的中間元素開始比較。如果在計算得到數(shù)據(jù)為空,則代表沒找到。折半查找的范圍不斷縮小一半,所以查找效率較高。

2. 輸入隨機數(shù)列并查找

假設(shè)我們有一個隨機數(shù)列[6, 2, 7, 10, 23, 13, 15],我們要查找其中是否存在數(shù)字13。

首先,我們需要對數(shù)列進行排序,得到[2, 6, 7, 10, 13, 15, 23]。

然后,我們使用折半查找算法進行查找。經(jīng)過三次處理后,我們找到了目標數(shù)據(jù)。

```python

import random

import time

import numpy as np

listNum [6, 2, 7, 10, 23, 13, 15] 示例例子

aimNum (listNum, k1)[0] 隨機挑選一個目標數(shù)字

print(listNum, aimNum)

print("--------隨機數(shù)列-----------")

listNumSort sorted(listNum)

print(listNumSort)

print("-------排序完成------------")

print(BinarySearch(listNumSort, aimNum))

```

3. 查找函數(shù)

下面是我們實現(xiàn)的折半查找函數(shù),為了更清晰地展示每一步的操作,我們添加了注釋。

```python

def BinarySearch(listNum, aimNum):

lowpos 0

highpos len(listNum) - 1

print("當前頭坐標:lowpos {}, 尾坐標 highpos {}".format(lowpos, highpos))

i 0

while(1):

i 1

print("第 {} 趟".format(i))

if(lowpos < highpos):

midpos lowpos (highpos - lowpos) // 2

midNum listNum[midpos]

print(" ", end''')

print(listNum, aimNum)

print("當前頭坐標lowpos {},尾

標簽: