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

在python3中實(shí)現(xiàn)查找數(shù)組中最接近與某值的元素操作

 更新時間:2020年02月29日 16:07:05   作者:筆筒188  
今天小編就為大家分享一篇在python3中實(shí)現(xiàn)查找數(shù)組中最接近與某值的元素操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

我就廢話不多說了,直接上代碼吧!

import datetime
 
def find_close(arr, e):
 start_time = datetime.datetime.now()
 
 size = len(arr)
 idx = 0
 val = abs(e - arr[idx])
 
 for i in range(1, size):
  val1 = abs(e - arr[i])
  if val1 < val:
   idx = i
   val = val1
 
 use_time = datetime.datetime.now() - start_time
 
 return arr[idx], use_time.seconds * 1000 + use_time.microseconds / 1000
 
def find_close_fast(arr, e):
 start_time = datetime.datetime.now()
  
 low = 0
 high = len(arr) - 1
 idx = -1
 
 while low <= high:
  mid = int((low + high) / 2)
  if e == arr[mid] or mid == low:
   idx = mid
   break
  elif e > arr[mid]:
   low = mid
  elif e < arr[mid]:
   high = mid
 
 if idx + 1 < len(arr) and abs(e - arr[idx]) > abs(e - arr[idx + 1]):
  idx += 1
  
 use_time = datetime.datetime.now() - start_time
 
 return arr[idx], use_time.seconds * 1000 + use_time.microseconds / 1000
 
if __name__ == "__main__":
 arr = []
 
 f = open("1Mints.txt")
 for line in f:
  arr.append(int(line))
 f.close()
 
 arr.sort()
 
 while 1:
  e = int(input("input a number:"))
  print("find_close ", find_close(arr, e))
  print ("find_close_fast ", find_close_fast(arr, e))

補(bǔ)充拓展:查詢集合中最接近某個數(shù)的數(shù)

查詢集合中最接近某個數(shù)的數(shù)

/*
★實(shí)驗(yàn)任務(wù)
給你一個集合,一開始是個空集,有如下兩種操作:

向集合中插入一個元素。
詢問集合中最接近某個數(shù)的數(shù)是多少。
★數(shù)據(jù)輸入
輸入第一行為一個正整數(shù) N,表示共有 N 個操作。
接下來 N 行,每行一個操作。
對于第一個操作,輸入格式為 1 x,表示往集合里插入一個值為 x 的元素。
對于第二個操作,輸入格式為 2 x,表示詢問集合中最接近 x 的元素是什么。
1<=N<=100000,1<=x<=1000000000。

★數(shù)據(jù)輸出
對于所有的第二個操作,輸出一個或者兩個整數(shù),表示最接近 x 的元素,有
兩個數(shù)的情況,按照升序輸出,并用一個空格隔開。
如果集合為空,輸出一行“Empty!”
數(shù)據(jù)保證插入的元素兩兩不同。

輸入示例 輸出示例

5 Empty!
2 1 2
1 2 2 4
2 3
1 4
2 3
*/

解題思路

一、采用C++ 中map容器,因?yàn)樗梢詫?shí)時對輸入的元素進(jìn)行排序。(map的使用可自行百度)

二、當(dāng)集合為空時,輸出“Empty!”;當(dāng)集合中只有一個元素時,直接輸出該元素。

三、下面重點(diǎn)看一般的情況。

1.先查找集合中是否有查詢的元素,有則輸出該元素

2.沒有的話,將該元素先插入集合中,再查找該元素處于集合的某個位置。

若該元素在集合的首位,則輸出該數(shù)的下一位。

若該元素在集合的末位,則輸出該數(shù)的上一位。

否則,判斷它左右元素的值與它的差的絕對值,輸出差的絕對值較小的那個元素。若相等,則同時輸出。

#include <iostream>
#include <map>
#include <cmath> 
using namespace std;
map <long long ,int> a;
int main()
{
	a.clear() ;
	int N,t;
	long long int x;
	cin >> N;
	while(N--)
	{
		cin >> t >> x;
		if(t==1)
			a[x]=1;
		else
		{
			if(a.empty() )//判斷集合是否為空 
				cout << "Empty!\n" ;
			else
			{
				if(a.size() == 1 )//若只有一個元素,則直接輸出 
					cout << a.begin()->first << endl;
				else
				{
					map <long long ,int>::iterator it,m,n;
					it=a.find(x);
					if(it!=a.end() )
					{
						cout << x <<endl;
						continue;
					}
					a[x]=1;
					it=a.find(x);
					if(it == a.begin() )
					{
						it++;
						cout << it -> first << endl;
					} 
					else if(it == a.end() )
					{
						it--;
						cout << it -> first << endl; 
					}
					else
					{
						m=--it;//m和n分別指向it的左右兩側(cè) 
						it++;
						n=++it;
						if(abs(m -> first - x) > abs(n -> first - x))
							cout << n -> first << endl;
						else if(abs(m -> first - x) == abs(n -> first - x))	
							cout << m -> first << " " << n -> first << endl;
						else
							cout << m -> first << endl;		
					}
					a.erase(a.find(x) ); 	
				}	 
			}	
		}	
	}
	return 0;
}

以上這篇在python3中實(shí)現(xiàn)查找數(shù)組中最接近與某值的元素操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實(shí)現(xiàn)將Excel轉(zhuǎn)換為json的方法示例

    Python實(shí)現(xiàn)將Excel轉(zhuǎn)換為json的方法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)將Excel轉(zhuǎn)換為json的方法,涉及Python文件讀寫及格式轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08
  • 對Python中g(shù)ensim庫word2vec的使用詳解

    對Python中g(shù)ensim庫word2vec的使用詳解

    今天小編就為大家分享一篇對Python中g(shù)ensim庫word2vec的使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • python 系統(tǒng)調(diào)用的實(shí)例詳解

    python 系統(tǒng)調(diào)用的實(shí)例詳解

    這篇文章主要介紹了python 系統(tǒng)調(diào)用的實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • Python實(shí)現(xiàn)印章代碼的算法解析

    Python實(shí)現(xiàn)印章代碼的算法解析

    這篇文章主要為大家介紹了Python印章代碼實(shí)現(xiàn)算法解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • python 給圖像添加透明度(alpha通道)

    python 給圖像添加透明度(alpha通道)

    這篇文章主要介紹了python 給圖像添加透明度,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Python定時器實(shí)例代碼

    Python定時器實(shí)例代碼

    這篇文章主要介紹了Python定時器實(shí)例代碼,向大家分享了兩部分代碼示例,一個是通過線程實(shí)現(xiàn)定時器timer,另一個是Python實(shí)現(xiàn)的精度可調(diào)的定時器實(shí)例,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Python操作MySQL數(shù)據(jù)庫的基本方法(查詢與更新)

    Python操作MySQL數(shù)據(jù)庫的基本方法(查詢與更新)

    在工作中我們需要經(jīng)常對數(shù)據(jù)庫進(jìn)行操作,比如 Oracle、MySQL、SQL Sever等,這篇文章主要給大家介紹了關(guān)于Python操作MySQL數(shù)據(jù)庫的基本方法包括了數(shù)據(jù)查詢與數(shù)據(jù)更新(新增、刪除、修改),需要的朋友可以參考下
    2023-09-09
  • python enumerate函數(shù)的使用方法總結(jié)

    python enumerate函數(shù)的使用方法總結(jié)

    這篇文章主要介紹了python enumerate使用方法總結(jié),enumerate函數(shù)用于遍歷序列中的元素以及它們的下標(biāo),有興趣的可以了解一下
    2017-11-11
  • python實(shí)現(xiàn)圖像全景拼接

    python實(shí)現(xiàn)圖像全景拼接

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)圖像全景拼接,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • django inspectdb 操作已有數(shù)據(jù)庫數(shù)據(jù)的使用步驟

    django inspectdb 操作已有數(shù)據(jù)庫數(shù)據(jù)的使用步驟

    這篇文章主要介紹了django inspectdb 操作已有數(shù)據(jù)庫數(shù)據(jù)的使用步驟,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02

最新評論

旬邑县| 丰顺县| 溆浦县| 长丰县| 扬中市| 平安县| 惠安县| 唐山市| 鄱阳县| 潞西市| 盱眙县| 道孚县| 郎溪县| 梁平县| 延长县| 浑源县| 城口县| 宁明县| 边坝县| 德清县| 绍兴县| 伊金霍洛旗| 易门县| 龙泉市| 扎鲁特旗| 潢川县| 雷州市| 铜梁县| 汝城县| 永修县| 青龙| 丹棱县| 凤翔县| 惠州市| 西丰县| 马边| 柯坪县| 湛江市| 鄂尔多斯市| 特克斯县| 广东省|