Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
15 / 4 / 2
Регистрация: 01.12.2010
Сообщений: 157
1

Тройной поиск элемента в двумерном массиве

09.10.2015, 12:55. Показов 1792. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет уважаемым форумчанам )!

Допустим у меня есть упорядоченный массив из 24 элементов, я хочу найти такой элемент, у которого значение будет 93.

С чего начать?
Как правильно составить алгоритм тройного поиска?

Данные которые составил:
int low = a[0] // начальный элемент первого блока
int hight = a[7] // конечный элемент первого блока
int len = 24; // длина массива

Бинарный смог, а тройной не получается, кто-то может помочь?

Уважительная просьба тема для обучения, поэтому мне важно разобраться в написании алгоритма на C#, не используя технологические возможности языка. То есть прописать код базируясь на сам алгоритм – простые циклы, условные операции…, без лямбда-выражении, создание классов, использование других навороченных возможностей языка.

Заранее благодарю !!
Миниатюры
Тройной поиск элемента в двумерном массиве  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.10.2015, 12:55
Ответы с готовыми решениями:

Поиск элемента в двумерном массиве
Здравствуйте всем! У меня вопрос по поводу двумерных массивов. И так мне нужно найти такой...

Поиск повторного элемента в двумерном массиве
Здравствуйте уважаемые форумчане! У меня появился новый вопрос о двумерном массиве - задача...

Поиск ближайшего равного элемента в двумерном массиве
Дается двумерный массив чисел и два числа - координаты элемента массива. Нужно найти ближайший...

Поиск максимального элемента в двумерном массиве
Public Function Max(ByVal ArrM(,) As Integer) As Integer Dim C1, C2 As Integer ...

2
15 / 4 / 2
Регистрация: 01.12.2010
Сообщений: 157
09.10.2015, 13:03  [ТС] 2
Лучший ответ Сообщение было отмечено Morris как решение

Решение

Код который пытался написать
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
using System;
 
class Program
{
    static void Print(int[] a)
    {
        for (int i = 0; i < a.Length; i++)
            Console.Write("{0,4}", a[i]);
 
        Console.WriteLine();
    }
 
    static int TernarySearch(int[] a, int value)
    {
        int first = 0, second = a.Length - 1, middleBetween;
 
        middleBetween = (first + second) / 3;
        while (first <= second)
        {
            if (value == a[middleBetween])
            {
                return middleBetween;
            }
            else
            {
                if (value < a[middleBetween])
                {
                    second = middleBetween - 1;
                }
                else
                {
                    first = middleBetween + 1;
                    second = middleBetween * 2 + 1;
                    //if (value > a[middleBetween] && value< a[middleBetween * 2])
                    //{
                    //    second = middleBetween + 1;
                    //    middleBetween = middleBetween * 2;
                    //}
                    //else
                    //{
                    //}
                }
            }
 
            middleBetween = (first + second) / 2;
        }
 
        return -1;
    }
 
    static void Main()
    {
        //int[] a = { 11, 22, 35, 44, 51, 56, 71, 80, 83, 87, 90, 92 };
        int[] a = { 4, 5, 7, 13, 20, 34, 37, 40, 45, 48, 55, 61, 70, 73, 85, 86, 88, 92, 93, 98, 105, 130, 135, 143 };
        int value, answer;
 
        value = int.Parse(Console.ReadLine());
        answer = TernarySearch(a, value);
 
        Console.ReadKey();
    }
}
но столкнулся с проблемой с делением на 3.
правильно ли будет каждую следующею категорию под-блока первого, тоже разбить на три , а если под-блок не делится на три, то перейти на бинарный поиск?
0
1144 / 873 / 506
Регистрация: 09.04.2014
Сообщений: 2,056
09.10.2015, 13:24 3
Цитата Сообщение от Morris Посмотреть сообщение
а если под-блок не делится на три, то перейти на бинарный поиск?
а если не делится на 2?...
0
09.10.2015, 13:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.10.2015, 13:24
Помогаю со студенческими работами здесь

Поиск максимального элемента в двумерном массиве
Здравствуйте! Собственно вопрос - оптимальный алгоритм. Есть ли тут вообще алгоритм который находит...

Поиск максимального элемента в двумерном массиве
Написать программу поиска в двумерном массиве максимального и минимального элемента массива. Массив...

Поиск максимального по модулю элемента в двумерном массиве
Почему для нахождения наибольшего по модулю элемента используется нулевая ячейка arr? int max...

Двоичный (бинарный) поиск элемента в двумерном массиве
Доброго времени суток. есть вот такое задание: Написать функцию, реализующую алгоритм бинарного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru