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 />銆€銆€鐚滄暟娓告垙锛氫粠閿洏涓换鎰忚緭鍏ヤ竴涓悕绉帮紝鍒ゆ柇鏁板垪涓槸鍚﹀寘鍚鍚嶇О銆愰『搴忔煡鎵俱€戜唬鐮侊細
銆€銆€銆€銆€
2)璇峰涓€涓湁搴忔暟缁勮繘琛屼簩鍒嗘煡鎵?{1,8, 10, 89, 1000, 1234} 锛岃緭鍏ヤ竴涓暟鐪嬬湅璇ユ暟缁勬槸鍚﹀瓨鍦ㄦ鏁帮紝骞朵笖姹傚嚭涓嬫爣锛屽鏋滄病鏈夊氨鎻愮ず"娌℃湁杩欎釜鏁?銆傘€愪細浣跨敤鍒伴€掑綊銆?br />浜屽垎鏌ユ壘鐨勬€濊矾鍒嗘瀽锛?/strong>
銆€銆€銆€銆€
浜屽垎鏌ユ壘鐨勪唬鐮佸疄鐜帮細
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-鏌ユ壘(浜屽垎娉曟煡鎵?的主要内容,如果未能解决你的问题,请参考以下文章