// pages 55 through top of 57 using System; using System.Collections; using System.Linq; using System.Text; using System.Diagnostics; using System.Threading; using System.IO; namespace csharp { class chapter4 { static int SeqSearch(int[] arr, int sValue) { for (int index = 0; index < arr.Length; index++) { if (arr[index] == sValue) return index; } return -1; } static void Main(string[] args) { int[] numbers = new int[100]; StreamReader numFile = File.OpenText("numbers.txt"); for (int i = 0; i < numbers.Length; i++) { numbers[i] = Convert.ToInt32(numFile.ReadLine(), 10); } int searchNumber; Console.Write("Enter a number to search for: "); searchNumber = Convert.ToInt32(Console.ReadLine(), 10); int foundAt; found = SeqSearch(numbers, searchNumber); if (foundAt >= 0) Console.WriteLine(searchNumber + " is in the array at position " + foundAt + "."); else Console.WriteLine(searchNumber + " is not in the array."); Console.Write(numbers[0] + " "); for(int i = 1; i < numbers.Length; i++) { if (i % 10 == 0) Console.WriteLine(); Console.Write(numbers[i] + " "); } Console.ReadKey(); } } } // FindMin and FindMax page 59 static int FindMin(int[] arr) { int min = arr[0]; for (int i = 0; i < arr.Length - 1; i++) { if (arr[i] < min) min = arr[i]; } return min; } static int FindMax(int[] arr) { int max = arr[0]; for (int i = 0; i < arr.Length - 1; i++) { if (arr[i] > max) max = arr[i]; } return max; } // page 60 static void swap(int[] arr, int index) { int temp = arr[0]; arr[0] = arr[index]; arr[index] = temp; } static bool SeqSearch(int[] arr, int sValue) { for (int index = 0; index < arr.Length - 1; index++) { if (arr[index] == sValue) { swap(arr, index); return true; } } return false; } // page 61 static int SeqSearch(int[] arr, int sValue) { for (int index = 0; index < arr.Length - 1; index++) { if (arr[index] == sValue && index > (arr.Length * .2)) { swap(arr, index); return index; } else if (arr[index] == sValue) return index; } return -1; } // pp. 63 and 64 - put the function in the CArray class from chapter 3 // and use the following driver program public int binSearch(int value) { int upperBound, lowerBound, mid; upperBound = arr.Length - 1; lowerBound = 0; while (lowerBound <= upperBound) { mid = (upperBound + lowerBound) / 2; if (arr[mid] == value) return mid; else if (value < arr[mid]) upperBound = mid - 1; else lowerBound = mid + 1; } return -1; } static void Main(string[] args) { CArray nums = new CArray(10); Random rnd = new Random(100); for(int i = 0; i <= 9; i++) nums.Insert(rnd.Next(1,100)); nums.BubbleSort(); nums.DisplayElements(); Console.Write("Enter a number to search for: "); int number = Convert.ToInt32(Console.ReadLine()); int index = nums.binSearch(number); Console.WriteLine("Index value of searched value: " + index); Console.ReadKey(); } // page 65 public int RbinSearch(int value, int lower, int upper) { if (lower > upper) return -1; else { int mid; mid = (int)(upper + lower) / 2; if (value < arr[mid]) return RbinSearch(value, lower, mid - 1); else if (value == arr[mid]) return mid; else return RbinSearch(value, mid + 1, upper); } }