Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Microsoft .NET

  Все выпуски  

RFpro.ru: Microsoft .NET


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты данной рассылки

Асмик Александровна
Статус: Академик
Рейтинг: 7511
∙ повысить рейтинг »
Micren
Статус: Профессор
Рейтинг: 1803
∙ повысить рейтинг »
Andrew Kovalchuk
Статус: Профессионал
Рейтинг: 701
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Microsoft .NET : C#

Номер выпуска:206
Дата выхода:18.03.2011, 10:00
Администратор рассылки:Alexey G. Gladenyuk (Управляющий)
Подписчиков / экспертов:164 / 62
Вопросов / ответов:1 / 2

Вопрос № 182502: Здравствуйте! Прошу помощи в следующем вопросе: Бинарная сортировка вставками.Что-то у меня не получается.Выводится в итоге не те числа которые были изначально даны.Прошу помочь


Вопрос № 182502:

Здравствуйте! Прошу помощи в следующем вопросе:
Бинарная сортировка вставками.Что-то у меня не получается.Выводится в итоге не те числа которые были изначально даны.Прошу помочь

Код:

static void InsertBin()
{
int[] A = { 3, 8, 4, 15, 2, 7, 10, 5 };
int i, j;
int n = 8;
int m, l, r, k;
Console.WriteLine("Исходный массив:");
for (i = 0; i < n; i++)
Console.Write("{0} ", A[i]);
for (i = 2; i < n; i++)
{
k=A[i];
l =1;
r = i;
while (l < r)
{
m = (l + r) / 2;
if (A[m]<=k)
{
l = m + 1;
}
else
r = m ;
}
for (j = i; j >r+1; j--)
{
A[j] = A[j -1];
A[r] = k;
}

}
Console.WriteLine(" ");
Console.WriteLine(" ");
Console.WriteLine("Отсортированый массив:");
for (i = 0; i < n; i++)
Console.Write("{0} ", A[i]);
Console.WriteLine(" ");


}

Зы:делать имено с тем исходным массивом

Отправлен: 13.03.2011, 09:26
Вопрос задал: Булгарин Влпдимир Викторович (Посетитель)
Всего ответов: 2
Страница вопроса »


Отвечает Челноков Виктор Альбертович (Студент) :
Здравствуйте, Булгарин Влпдимир Викторович!
ПОсмотрите вариант

Код:

static void InsertBin()
{
{
int[] A = { 3, 8, 4, 15, 2, 7, 10, 5 };
int i, j;
int n = 8;
Boolean b=true ;
int m, l, r;
int k=0;
Console.WriteLine("Исходный массив:");
for (i = 0; i < n; i++)
Console.Write("{0} ", A[i]);
b=false;
while (!b)
{
b=true;
for (i=0;i<n-1;i++)
{
if(A[i]>A[i+1])
{
m=A[i];
l=A[i+1];
A[i + 1] = m;
A[i] = l;
b=false;
}

}


}

Console.WriteLine(" ");
Console.WriteLine(" ");
Console.WriteLine("Отсортированый массив:");
for (i = 0; i < n; i++)
Console.Write("{0} ", A[i]);
Console.WriteLine(" ");
Console.Read();
}





Ответ отправил: Челноков Виктор Альбертович (Студент)
Ответ отправлен: 13.03.2011, 10:24
Номер ответа: 266245

Оценка ответа: 2

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 266245 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Отвечает Micren (Профессор) :
    Здравствуйте, Булгарин Влпдимир Викторович!
    Надеюсь это то, что Вам нужно.
    Код:
    using System;

    namespace Application
    {
    class MainClass
    {
    public static void Main (string[] args)
    {
    int[] A = { 3, 8, 4, 15, 2, 7, 10, 5 };
    PrintArray ("Исходный массив:", A);
    SortBin (A);
    PrintArray ("Отсортированный:", A);
    }

    public static void PrintArray (string message, int[] arr)
    {
    Console.WriteLine (message);
    for (int i = 0; i < arr.Length; ++i) {
    Console.Write ("{0} ", arr[i]);
    }
    Console.WriteLine ();
    }

    static void SortBin (int[] arr)
    {
    for (int top = 1; top < arr.Length; ++top) {
    int item = arr[top];
    int min = 0, max = top - 1;
    while (min <= max) {
    int mid = min + (max - min) / 2;
    if (item > arr[mid]) {
    min = mid + 1;
    } else {
    max = mid - 1;
    }
    }
    int j = top;
    while (j > min) {
    arr[j] = arr[--j];
    }
    arr[min] = item;
    }
    }
    }
    }

    Результат работы:
    Код:
    Исходный массив:
    3 8 4 15 2 7 10 5
    Отсортированный:
    2 3 4 5 7 8 10 15

    Ответ отправил: Micren (Профессор)
    Ответ отправлен: 13.03.2011, 19:10
    Номер ответа: 266252
    Украина, Краматорск

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 266252 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.



    В избранное