Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Binary_search
- {
- class Program
- {
- static void Main(string[] args)
- {
- List<int> list = Console.ReadLine().Split(' ').Select(int.Parse).ToList();
- int num = int.Parse(Console.ReadLine());
- int cnt = 0;
- if (LinearSearch(list, num, ref cnt))
- {
- Console.WriteLine("Yes");
- Console.WriteLine($"Linear search made {cnt} iterations");
- }
- else
- {
- Console.WriteLine("No");
- Console.WriteLine($"Linear search made {cnt} iterations");
- }
- int binaryCount = BinarySearch(list, num);
- Console.WriteLine($"Binary search made {binaryCount} iterations");
- }
- static bool LinearSearch(List<int> nums, int num, ref int count)
- {
- for (int i = 0; i < nums.Count; i++)
- {
- count++;
- if (nums[i] == num)
- {
- return true;
- }
- }
- return false;
- }
- static int BinarySearch(List<int> nums, int num)
- {
- InsertionSort(nums);
- //nums.Sort();
- int low = 0;
- int high = nums.Count - 1;
- int midpoint = 0;
- int count = 0;
- while (low <= high)
- {
- midpoint = low + (high - low) / 2;
- count++;
- if (num == nums[midpoint])
- {
- return count;
- }
- else if (num < nums[midpoint])
- {
- high = midpoint - 1;
- }
- else if (num > nums[midpoint])
- {
- low = midpoint + 1;
- }
- }
- return count;
- }
- static void InsertionSort(List<int> nums)
- {
- for (int index1 = 0; index1 < nums.Count; index1++)
- {
- for (int index2 = index1; index2 > 0; index2--)
- {
- if (nums[index2 - 1] > nums[index2])
- {
- Swap(nums, index2 - 1, index2);
- }
- else
- {
- break;
- }
- }
- }
- }
- static void Swap(List<int> nums, int index1, int index2)
- {
- int temp = nums[index1];
- nums[index1] = nums[index2];
- nums[index2] = temp;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement