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

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

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

1. 簡(jiǎn)介

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

1)對(duì)一個(gè)無(wú)序數(shù)列,首先要排序;

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

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

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

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

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

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

```python

import random

import time

import numpy as np

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

aimNum (listNum, k1)[0] 隨機(jī)挑選一個(gè)目標(biāo)數(shù)字

print(listNum, aimNum)

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

listNumSort sorted(listNum)

print(listNumSort)

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

print(BinarySearch(listNumSort, aimNum))

```

3. 查找函數(shù)

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

```python

def BinarySearch(listNum, aimNum):

lowpos 0

highpos len(listNum) - 1

print("當(dāng)前頭坐標(biāo):lowpos {}, 尾坐標(biāo) 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("當(dāng)前頭坐標(biāo)lowpos {},尾

標(biāo)簽: