Golang-鏌ユ壘(浜屽垎娉曟煡鎵?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang-鏌ユ壘(浜屽垎娉曟煡鎵?相关的知识,希望对你有一定的参考价值。

鏍囩锛?a href='http://www.mamicode.com/so/1/return' title='return'>return   涓棿   Golan   娓告垙   鍒ゆ柇   turn   bin   val   div   

Golang-鏌ユ壘

銆€銆€浠嬬粛锛?/p>

銆€銆€銆€銆€鍦?Golang 涓紝鎴戜滑甯哥敤鐨勬煡鎵炬湁涓ょ:
銆€銆€銆€銆€銆€銆€1)椤哄簭鏌ユ壘
銆€銆€銆€銆€銆€銆€2)浜屽垎鏌ユ壘(璇ユ暟缁勬槸鏈夊簭)

銆€銆€妗堜緥婕旂ず锛?br />銆€銆€1)鏈変竴涓暟鍒楋細鐧界湁楣扮帇銆侀噾姣涚嫯鐜嬨€佺传琛緳鐜嬨€侀潚缈艰潬鐜?br />銆€銆€鐚滄暟娓告垙锛氫粠閿洏涓换鎰忚緭鍏ヤ竴涓悕绉帮紝鍒ゆ柇鏁板垪涓槸鍚﹀寘鍚鍚嶇О銆愰『搴忔煡鎵俱€戜唬鐮侊細

銆€銆€銆€銆€鎶€鏈浘鐗? src= 鎶€鏈浘鐗? src=

2)璇峰涓€涓湁搴忔暟缁勮繘琛屼簩鍒嗘煡鎵?{1,8, 10, 89, 1000, 1234} 锛岃緭鍏ヤ竴涓暟鐪嬬湅璇ユ暟缁勬槸鍚﹀瓨鍦ㄦ鏁帮紝骞朵笖姹傚嚭涓嬫爣锛屽鏋滄病鏈夊氨鎻愮ず"娌℃湁杩欎釜鏁?銆傘€愪細浣跨敤鍒伴€掑綊銆?br />浜屽垎鏌ユ壘鐨勬€濊矾鍒嗘瀽锛?/strong>

銆€銆€銆€銆€鎶€鏈浘鐗? src=

 

浜屽垎鏌ユ壘鐨勪唬鐮佸疄鐜帮細

package main 
import "fmt"
//浜屽垎鏌ユ壘鐨勫嚱鏁?/*
浜屽垎鏌ユ壘鐨勬€濊矾: 姣斿鎴戜滑瑕佹煡鎵剧殑鏁版槸 findVal
1.arr 鏄竴涓湁搴忔暟缁勶紝骞朵笖鏄粠灏忓埌澶ф帓搴?2.鍏堟壘鍒?涓棿鐨勪笅鏍?middle = (leftIndex + rightIndex) / 2, 鐒跺悗璁? 涓棿涓嬫爣鐨勫€煎拰 findVal 杩涜姣旇緝
2.1濡?鏋?arr[middle] > findVal ,	灏卞簲璇ュ悜	leftIndex	(middle - 1)
2.2濡?鏋?arr[middle] < findVal ,	灏卞簲璇ュ悜	middel+1	rightIndex
2.3濡傛灉 arr[middle] == findVal 锛?灏辨壘鍒?2.4涓婇潰鐨?2.1 2.2 2.3 鐨勯€昏緫浼氶€掑綊鎵ц
3.鎯充竴涓嬶紝鎬庝箞鏍风殑鎯呭喌涓嬶紝灏辫鏄庢壘涓嶅埌[鍒嗘瀽鍑洪€€鍑洪€掑綊鐨勬潯浠?!]
if	leftIndex > rightIndex {
// 鎵句笉鍒?. return ..
}
*/
func BinaryFind(arr *[6]int, leftIndex int, rightIndex int, findVal int) {

	//鍒ゆ柇 leftIndex 鏄惁澶т簬 rightIndex 
	if leftIndex > rightIndex {
		fmt.Println("鎵句笉鍒?) return
	}
	//鍏堟壘鍒?涓棿鐨勪笅鏍?	middle := (leftIndex + rightIndex) / 2
	if (*arr)[middle] > findVal {
	//璇存槑鎴戜滑瑕佹煡鎵剧殑鏁帮紝搴旇鍦?leftIndex --- middel-1 BinaryFind(arr, leftIndex, middle - 1, findVal)
	} else if (*arr)[middle] < findVal {
	//璇存槑鎴戜滑瑕佹煡鎵剧殑鏁帮紝搴旇鍦?middel+1 --- rightIndex BinaryFind(arr, middle + 1, rightIndex, findVal)
	} else {
	//鎵惧埌浜?	fmt.Printf("鎵惧埌浜嗭紝涓嬫爣涓?v 
", middle)
	}
}

func main() {

    arr := [6]int{1,8, 10, 89, 1000, 1234}


    BinaryFind(&arr, 0, len(arr) - 1, -6)
}

銆€銆€

 

以上是关于Golang-鏌ユ壘(浜屽垎娉曟煡鎵?的主要内容,如果未能解决你的问题,请参考以下文章

浜屽垎鏌ユ壘娉曞疄鐜版渶浼樺浘鐗囧帇缂╀綋绉苟涓婁紶

浠庨厭妗屾父鎴忕湅浜屽垎鏌ユ壘绠楁硶

浜屽弶鏌ユ壘鏍?Java瀹炵幇

绠楁硶6---鏌ユ壘