[Go] dream team search: 10000000 iteration, elapsed time: 539984163 ns, iteration time: 53 ns
[Java] standard search : 10000000 iteration, elapsed time: 574840969, iteration time: 57 ns
[Java] bob search : 10000000 iteration, elapsed time: 750649175, iteration time: 75 ns
Versions:
- Go 1.10.2
- Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)
import java.util.Arrays;
class BinarySearcher {
static int search(int[] items, int value) {
int lo = 0;
int hi = items.length - 1;
while (lo <= hi) {
int mid = lo + (hi - lo) / 2;
int item = items[mid];
if (item == value) {
return mid;
} else if (value < item) {
hi = mid - 1;
} else {
lo = mid + 1;
}
}
return -1;
}
}
public class Main {
public static void main(String[] args) {
int inputSize = 1000000;
int[] input = new int[inputSize];
for (int i = 0; i < inputSize; i++) {
input[i] = i;
}
Arrays.sort(input);
int iterCount = 10000000;
for (int i = 0; i < iterCount; i++) {
Arrays.binarySearch(input, i % inputSize);
}
long begin = System.nanoTime();
for (int i = 0; i < iterCount; i++) {
Arrays.binarySearch(input, i % inputSize);
}
long elapsedTime = System.nanoTime() - begin;
System.out.printf("standard search: %d iteration, elapsed time: %d, iteration time: %d ns\n", iterCount, elapsedTime, elapsedTime / iterCount);
for (int i = 0; i < iterCount; i++) {
BinarySearcher.search(input, i % inputSize);
}
begin = System.nanoTime();
for (int i = 0; i < iterCount; i++) {
BinarySearcher.search(input, i % inputSize);
}
elapsedTime = System.nanoTime() - begin;
System.out.printf("bob search: %d iteration, elapsed time: %d, iteration time: %d ns\n", iterCount, elapsedTime, elapsedTime / iterCount);
}
}
package main
import (
"fmt"
"sort"
"time"
)
func main() {
const inputSize = 1000000
input := make([]int, inputSize)
for i := range input {
input[i] = i
}
sort.Ints(input)
begin := time.Now()
const iterCount = 10000000
for i := 0; i < iterCount; i++ {
searchInMyAss(input, i%inputSize)
}
elapsedTime := time.Now().Sub(begin)
fmt.Printf("dream team search: %v iteration, elapsed time: %d ns, iteration time: %d ns\n", iterCount, elapsedTime, elapsedTime/iterCount)
}
func searchInMyAss(dataSlice []int, num int) int {
sliceLen := uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
var mid, offset uint
for i := 0; i < 32; i++ {
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
}
return -1
}
func reBinSearch61(dataSlice []int, num int) int {
sliceLen := uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
var mid, offset uint
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
mid = sliceLen / 2
if dataSlice[mid] == num {
return int(offset + mid)
} else if num < dataSlice[mid] {
dataSlice = dataSlice[:mid]
} else if num > dataSlice[mid] {
dataSlice = dataSlice[mid+1:]
offset += mid + 1
}
sliceLen = uint(len(dataSlice))
if sliceLen == 0 {
return -1
}
return -1
}