二分探索法のBinarySearch golangデータ構造とアルゴリズム

基本的な文法はほとんど、

我々は、システムのラインとデータ構造とアルゴリズムを見てする必要があります。

私は右の本を見つけられませんでした、

githubの上のリファレンスプロジェクト:

https://github.com/floyernick/Data-Structures-and-Algorithms/

何の主な機能はありませんgolang、実行することができない、注意してください

テストするとき、あなたは、外出先のテストを使用することができます。

BinarySearch.go

パッケージBinarySearch 

//二分法查找
FUNC BinarySearch(配列[] INT、数INT)INT { 
	minIndex:= 0 
	maxIndex:= LEN(アレイ) - 1 
	minIndexための<= maxIndex { 
		midIndex:= INT((maxIndex + minIndex)/ 2)
		midItem:=配列[midIndex] 
		もし数== midItem { 
			戻りmidIndex 
		} 

		もしmidItem <数{ 
			minIndex = midIndex + 1 
		}そうならmidItem>数{ 
			maxIndex = midIndex - 1 
		} 
	} 

	戻り-1 
}

  

BinarySearch_test.go

パッケージBinarySearch 

インポート(
	"FMT" 
	"数学/ランド" 
	"テスト" 
	"時間" 

//先排序
FUNC SortArray(配列[] INT){ 
	itemIndex、itemValue用:=レンジアレイ{ 
		!itemIndex = 0 &&アレイの[itemIndex -1]> itemValue { 
			アレイ[itemIndex] =配列[itemIndex-1] 
			itemIndex - = 1 
		} 
		アレイ[itemIndex] = itemValue 
	} 
} 

TestBinarySearch(T * testing.T){FUNC 
	ランダム:= rand.New(rand.NewSource (time.Now()UnixNano()))
	fmt.Println(ランダム)
	配列:=([] INT、random.Intn(100作る))
	fmt.Println(アレイ)の

	iについて:=範囲配列{ 
		アレイ[I ] =ランダム。INT(100) 
	} 
	FMT。println(アレイ)
	SortArray(アレイ)
	fmt.Println(アレイ)

	=レンジ配列:_、値は{ 
		結果:= BinarySearch(アレイ、値)
		結果場合== -1 { 
			t.Fail()
		} 
	} 
}

  

 

おすすめ

転載: www.cnblogs.com/aguncn/p/11668457.html