Your algorithm for the search must meet certain requirements:
- correctness - it must return the correct results that are being sought, every time
- applicability - it must be appropriate for the source type and data needs
- 因为搜索的对象可能是 Excel、XML、JSON 或关系型数据库等
- 因为搜索的对象可能是 Excel、XML、JSON 或关系型数据库等
- speed - it must execute in a timely manner based on your requirements for searching
Linear Search
The basic through process in a linear search is this:
- set a counter equal to 0
- check the item at position (counter) and if it equals search term, end the algorithm
- if search term is not found in step 2, increment counter and repeat step 2
static void LineSearchDemo(){// declare an array of integers that will be used for searchingint[] searchArray = { 5, 10, 3, 2, 4 };int term = 2;int index = LinearSearch(searchArray, term);if (index != -1){Console.WriteLine($"Your search term was found at position {index}");}else{Console.WriteLine("Your search term was not found.");}}public static int LinearSearch(int[] arr, int term){// set up a loop to iterate over the elements in the array// because this is a linear search, we start at the beginning// of the array and work through the elements looking for the termfor (var i = 0; i < arr.Length; i++){// if we found a match, we can return the index in the array where the term isif (arr[i] == term){return i;}}// if the term is not found, we reach the end of the array// and as a result, we return -1 indicating that the term wasn't found// at a valid index in the array.return -1;}
Binary Search
只能对有序列表使用 Binary Search。
The logic behind this search goes something like this:
- Get the list to search
- Find the mid-point and get an index to mark that mid-point
- Compare the value at the mid-point and the search term
- If the two match, the search is done. If not, proceed to the next step
- Is the term greater or less than the mid-point value?
- if greater, get index for mid-point between current mid-point and end of list. Repeat steps 3 to 5 and i. or ii. until term is found or not
- if less than, get the index for mid-point between current mid-point and beginning of list. Repeat steps 3 to 5 and i. or ii. until term is found or not
- if greater, get index for mid-point between current mid-point and end of list. Repeat steps 3 to 5 and i. or ii. until term is found or not
- If term is found above, end and return index of term
- If term is not found above, end and return search failed result
static void BinarySearchDemo(){// declare an array of integers that will be used for searchingint[] arrLinearSearch = { 2, 3, 4, 5, 8, 10 };var searchTerm = 8;var result = BinarySearch(arrLinearSearch, searchTerm, 0, arrLinearSearch.Length - 1);if (result != -1){Console.WriteLine($"Search term found at index {result}.");}else{Console.WriteLine("Search term not found in the array.");}}public static int BinarySearch(int[] arr, int key, int left, int right){while (left <= right){var mid = (left + right) / 2;if (key == arr[mid])return mid;if (key < arr[mid]){right = mid - 1;}else{left = mid + 1;}}return -1;}
