成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

《C語言入門》簡(jiǎn)單有序數(shù)組二分查找代碼實(shí)現(xiàn)

mozillazg / 3777人閱讀

摘要:目錄簡(jiǎn)單原理代碼實(shí)現(xiàn)簡(jiǎn)單原理想必學(xué)過語言的各位都聽說過二分查找的算法,今天我就給各位萌新介紹一下二分查找的簡(jiǎn)單原理和代碼實(shí)現(xiàn)。

目錄

1.簡(jiǎn)單原理

2.代碼實(shí)現(xiàn)

1.簡(jiǎn)單原理

想必學(xué)過C語言的各位都聽說過二分查找的算法,今天我就給各位萌新介紹一下二分查找的簡(jiǎn)單原理和代碼實(shí)現(xiàn)。

我們使用數(shù)組的方式實(shí)現(xiàn)二分查找的目標(biāo),我們?nèi)∫淮行驍?shù)組的中間數(shù)組元素,再將此數(shù)組元素大小與查找數(shù)組比較,再判斷是否找到和下一查找區(qū)間。使用這種方式可以大大提高我們算法的效率,相比與遍歷數(shù)組的方法減少了查找次數(shù),也減少了查找時(shí)間。下面我們介紹具體代碼實(shí)現(xiàn)。

2.代碼實(shí)現(xiàn)

我們先設(shè)置一個(gè)有序數(shù)組,如下所示

int arr[] = { 1,2,3,4,5,6,7,8,9,10,11,12,13 };

接下來我們利用sizeof的方式算出數(shù)組長(zhǎng)度大小,并且初始第一次查找的下標(biāo)left和right(注意,最后一個(gè)數(shù)組下標(biāo)為數(shù)組長(zhǎng)度-1),如下圖所示

int sz = sizeof(arr) / sizeof(arr[0]);	int left = 0;	int right = sz - 1;

我們?cè)僭O(shè)置一個(gè)mid值,作為與被查找數(shù)據(jù)比較的對(duì)象,我們?cè)谘h(huán)體中將這個(gè)值賦為(left+right)/2。重點(diǎn)??!重點(diǎn)??!重點(diǎn)?。?span style="color:#be191c;">我們將兩者比較后需要調(diào)整left和right的值。若查找數(shù)值與mid相等,則此mid下標(biāo)就是需要查找數(shù)值的位置,若查找數(shù)值大于mid,我們將left重新賦值為mid+1,若查找數(shù)值小于mid,則將right賦值為mid-1,我們將此算法用在一個(gè)while循環(huán)中,若left<=right證明數(shù)組中還存在待查找元素,所以我們使用這一條件作為循環(huán)判斷條件。下面是全部代碼。

int main(){	int arr[] = { 1,2,3,4,5,6,7,8,9,10,11,12,13 };	int sz = sizeof(arr) / sizeof(arr[0]);	int left = 0;	int right = sz - 1;	int a = 0;	int mid = 0;	scanf("%d", &a);	while (left <= right)	{		mid = (right + left) / 2;		if (a > arr[mid])			left = mid + 1;	    if (a < arr[mid])			right = mid - 1;		if(a==arr[mid])		{			printf("找到了,下標(biāo)是%d", mid);			break;		}	}	if (left > right)		printf("找不到了");	return 0;}

感謝大家的閱讀,歡迎各位點(diǎn)贊評(píng)論,互關(guān)互助,有贊必回,祝各位萬事如意。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/124775.html

相關(guān)文章

  • 算法入門

    摘要:算法的運(yùn)行時(shí)間用大表示法表示。事實(shí)上還有另一種算法即也就是階乘算法。五選擇排序算法在理解選擇排序算法的原理之前,我們需要了解大表示法,數(shù)組與鏈表等概念。這種辦法,我們暫且稱之為預(yù)留座位。 一.算法的定義 任何代碼片段都可以被稱作是算法,這也就是說算法其實(shí)就是完成一組任務(wù)的指令.算法的優(yōu)點(diǎn)在于要么速度很快,要么解決一些很有趣的問題,要么兼而有之.并且算法可以應(yīng)用于任何編程語言中. 二.什...

    xingqiba 評(píng)論0 收藏0
  • 二分查找

    摘要:正文二分查找關(guān)于二分查找法二分查找法主要是解決在一堆數(shù)中找出指定的數(shù)這類問題。用二分查找法找尋上界與精確查找不同之處在于,精確查找分成三類大于,小于,等于目標(biāo)數(shù)。 由一道題目引出的: 題目描述 給定一個(gè)有序的數(shù)組,查找某個(gè)數(shù)是否在數(shù)組中,請(qǐng)編程實(shí)現(xiàn)。 分析與解法 一看到數(shù)組本身已經(jīng)有序,我想你可能反應(yīng)出了要用二分查找,畢竟二分查找的適用條件就是有序的。那什么是二分查找呢? 二分查找可以...

    jerryloveemily 評(píng)論0 收藏0
  • 插入排序就這么簡(jiǎn)單

    摘要:插入排序就這么簡(jiǎn)單從上面已經(jīng)講解了冒泡和選擇排序了,本章主要講解的是插入排序,希望大家看完能夠理解并手寫出插入排序的代碼,然后就通過面試了如果我寫得有錯(cuò)誤的地方也請(qǐng)大家在評(píng)論下指出。 插入排序就這么簡(jiǎn)單 從上面已經(jīng)講解了冒泡和選擇排序了,本章主要講解的是插入排序,希望大家看完能夠理解并手寫出插入排序的代碼,然后就通過面試了!如果我寫得有錯(cuò)誤的地方也請(qǐng)大家在評(píng)論下指出。 插入排序介紹 來...

    Forest10 評(píng)論0 收藏0
  • Python 二分查找與 bisect 模塊

    摘要:對(duì)于大數(shù)據(jù)量,則可以用二分查找進(jìn)行優(yōu)化。有一個(gè)模塊,用于維護(hù)有序列表。和用于指定列表的區(qū)間,默認(rèn)是使用整個(gè)列表。模塊提供的函數(shù)可以分兩類只用于查找,不進(jìn)行實(shí)際的插入而則用于實(shí)際插入。 Python 的列表(list)內(nèi)部實(shí)現(xiàn)是一個(gè)數(shù)組,也就是一個(gè)線性表。在列表中查找元素可以使用 list.index() 方法,其時(shí)間復(fù)雜度為O(n)。對(duì)于大數(shù)據(jù)量,則可以用二分查找進(jìn)行優(yōu)化。二分查找要求...

    URLOS 評(píng)論0 收藏0
  • 數(shù)據(jù)結(jié)構(gòu)與算法——二分查找

    摘要:所以,二分查找較適用于一次排序,多次查找的數(shù)據(jù)。面對(duì)大量的數(shù)據(jù),二分查找方能體現(xiàn)其優(yōu)勢(shì)。 1. 二分查找的思想 二分查找是一種使用十分普遍的查找算法,其基本的思路也非常的簡(jiǎn)單,在一個(gè)有序的數(shù)據(jù)集合中,我們想要查找某個(gè)數(shù)據(jù),直接取最中間的那個(gè)數(shù)據(jù),將它和要找的數(shù)據(jù)進(jìn)行比較,如果較大,則在更大的那個(gè)數(shù)值區(qū)間繼續(xù)取中間值查找,反之亦然。 例如我們要在一個(gè)有序的集合里[1,3,5,6,7,8,...

    boredream 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<