Java實現經典七大經典排序演算法
阿新 • • 發佈:2020-08-03
非遞迴寫法:
public static int search(int left, int right, int[] array, int key) { int mid = (left + right) / 2; //不在當前搜尋集裡面 if (key < array[0] || key > array[array.Length - 1]) { return -1; }while (left <= right) { if (array[mid] == key) { return mid; } else if (array[mid] > key) { right = mid - 1; }else { left = mid + 1; } } return -1; }
遞迴寫法:
public static int search(int left, int right, int[] array, int key) { int mid = (left + right) / 2;//不在當前搜尋集裡面 if (key < array[0] || key > array[array.Length - 1]) { return -1; } while (left <= right) { if (array[mid] == key) { return mid; } else if (array[mid] > key) { return search(left,mid-1,array,key); } else { return search(mid+1,right,array,key); } } return -1; }
Main函式:
public static void Main() { int[] array = { 10, 14, 16, 18, 25, 30, 45, 65, 76, 81, 90, 102, 156 }; foreach(int a in array) { Console.Write(a+" "); } Console.WriteLine(); Console.WriteLine("查詢10000:"+search(1,array.Length,array,10000)); Console.WriteLine("查詢5:" + search(1,array.Length,array, 5)); Console.WriteLine("查詢18:" + search(1, array.Length , array, 18)); Console.ReadKey(); }