Линейный поиск по значению
бет 2/4 Дата 03.12.2023 өлшемі 1,96 Mb. #134201 түрі Лекция
Байланысты:
Алгоритмы поиска Принимает в качестве аргументов массив и искомое значение, а возвращает индекс найденного элемен-та, или -1 в случае неудачи. Тип данных ограничен структурами для которых реализован интерфейс сравнения IEquatable. public static int LinearSearch (this T[] a, T key) where T : struct, IEquatable { CheckArray(a); for (int i = 0; i < a.Length; ++i) { // сравниваем текущее значение с искомым if (a[i].Equals(key)) { return i ; } } //если ничего не нашли return -1; } Линейный поиск индекса минимального элемента Позволяет найти индекс первого наименьшего зна-чения в массиве. Тип входящих аргументов ограничен структурами с реализованным интерфейсом Icomparable. public static int IndexOfMin (this T[] a) where T : struct, IComparable { CheckArray(a); int indexMin = 0; T min = a[0]; for (int i = 1; i < a.Length; ++i) { if (a[i].CompareTo(min) < 0) //аналог записи a[i] < min, для обобщений { min = a[i]; indexMin = i; } } return indexMin; } Позволяет найти наименьший элемент в массиве. public static T MinValue(this T[] a) where T: struct, IComparable { CheckArray(a); T min = a[0]; for (int i = 1; i < a.Length; ++i) { if (a[i].CompareTo(min) < 0) { min = a[i]; } } return min ; } Линейный поиск индекса максимального элемента Позволяет найти позицию первого наибольшего значения. public static int IndexOfMax(this T[] a) where T : struct, IComparable { CheckArray(a); int indexMax = 0; T max = a[0]; for (int i = 1; i < a.Length; ++i) { if (a[i].CompareTo(max) > 0) //аналог записи a[i] > max, для обобщений { max = a[i]; indexMax = i; } } return indexMax; } Достарыңызбен бөлісу: