public static int InsertSort(OurList <int> list) { int count = 0; for (int i = 0; i < list.Lenght(); i++) { int remember = list.Get(i); count += i; int place = 0; while (remember < list.Get(place)) { count += place; place = place + 1; count++; } if (place < i) { for (int j = i; j > place; j--) { list.Set(list.Get(j - 1), j); count += j - 1 + j; count++; } list.Set(remember, place); count += place; } count++; } return(count); }
static public int BinarySearchOurList(OurList <long> Ourlist, int a) { int length = Ourlist.Lenght(); int element = 0; int half = length / 2; int half2 = length / 2; for (int k = 0; k < length; k++) { if (a > Ourlist.Get(half)) { if (half % 2 == 0) { half2 = half2 / 2; } else { half2 = half2 / 2 + 1; } half = half + half2; element++; element += half; } else if (a < Ourlist.Get(half)) { if (half % 2 == 0) { half2 = half2 / 2; } else { half2 = half2 / 2 + 1; } half = half - half2; element++; element += half; } else if (a == Ourlist.Get(half)) { element++; element += half; break; } } return(element); }
static void Main(string[] args) { ///ПОИСК ЭЛЕМЕНТА В МАССИВЕ var Ran = new Random(); int s = 90000; long[] mass3 = new long[s]; int a = Ran.Next(1, s); for (int i = 0; i < s; i++) { mass3[i] = i; } OurList <long> list2 = new OurList <long>(); for (int i = 1; i < s; i++) { list2.Add(i); } Console.WriteLine("Нашли число " + a + " за " + BinarySearchOurList(list2, a) + " шага(ов)."); Console.WriteLine("Нашли число " + a + " за " + BinarySearch(mass3, a) + " шага(ов)."); int count = 0; Console.WriteLine("Введите длину массива/списка для сортировки"); int lenght = int.Parse(Console.ReadLine()); int[] mass = new int[lenght]; int[] mass2 = new int[lenght]; for (int i = 0; i < lenght; i++) { mass[i] = Ran.Next(1, lenght); } Array.Copy(mass, mass2, mass.Length); OurList <int> list = new OurList <int>(); for (int i = 0; i < mass.Length; i++) { list.Add(mass[i]); } ///СОРТИРОВКА МАССИВА ВСТАВКОЙ Console.WriteLine("\nИсходный массив:"); for (int i = 0; i < mass.Length; i++) { Console.Write(mass[i] + " "); } count = InsertSort(mass); Console.WriteLine("\nОтсортированный массив: "); for (int i = 0; i < mass.Length; i++) { Console.Write(mass[i] + " "); } Console.WriteLine("\nКоличество итерраций при сортировке массива вставкой длинной " + mass.Length + ": " + count); ///СОРТИРОВКА СПИСКА ВСТАВКОЙ Console.WriteLine("\nИсходный список:"); for (int i = 0; i < list.Lenght(); i++) { Console.Write(list.Get(i) + " "); } count = InsertSort(list); Console.WriteLine("\nОтсортированный список: "); for (int i = 0; i < list.Lenght(); i++) { Console.Write(list.Get(i) + " "); } Console.WriteLine("\nКоличество итерраций при сортировке списка вставкой длинной " + list.Lenght() + ": " + count); ///СОРТИРОВКА МАССИВА КОРЗИНКАМИ Console.WriteLine("\nИсходный массив:"); for (int i = 0; i < mass2.Length; i++) { Console.Write(mass2[i] + " "); } Console.WriteLine("\nВведите количество корзинок"); int n = int.Parse(Console.ReadLine()); count = BucketSort(mass2, 10); Console.WriteLine("\nОтсортированный массив: "); for (int i = 0; i < mass2.Length; i++) { Console.Write(mass2[i] + " "); } Console.WriteLine("\nКоличество итерраций при сортировке массива корзинками длинной " + mass2.Length + ": " + count); Console.ReadKey(); }