Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2010, 06:04   #1
Mirach
Новичок
Джуниор
 
Регистрация: 20.06.2010
Сообщений: 1
По умолчанию

Привет! Есть код, реализующий сортировку бинарными вставками:

Код:
/*Бинарными вставками*/
int sort_bin (int* data, int size) 
{
        int i;
        for (i = 0; i < size; i++) {
                int pos = -1;
                int start = 0;
                int end = i - 1;
                int numToInsert = data[i];
                // Находим место вставки с помощью бинарного поиска
                while (start <= end && !(pos != -1)) {
                        int middle = (start + end) / 2;
                        if (numToInsert > data[middle]) {
                                start = middle + 1;
                        } else if (numToInsert < data[middle]) {
                                end = middle - 1;
                        } else {
                                pos = middle;
                        }
                }
                if(end < 0){
                        // определяем позицию в случае если элемент меньше всех отсортированных
                        pos = 0;
                } else if(start >= i){
                        // определяем позицию в случае если элемент больше всех отсортированных
                        pos = i;
                }
                if (pos < i) {
                        // сдвигаем элементы вправо на одну позицию
                        int j;
                        for (j = i; j > pos; j--) {
                                data[j] = data[j - 1];
                        }
                        data[pos] = numToInsert;
                }
        }
        return *data;
}
/*-=End-=*/
но код неправильно сортирует массив, когда он заполнен рандомно.
Помогите пожалуйста обнаружить ошибку.

А может у кого-нибудь есть код получше ?

Последний раз редактировалось Stilet; 30.01.2011 в 11:22.
Mirach вне форума Ответить с цитированием
Старый 30.01.2011, 01:26   #2
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

Метод бинарных вставок работает лишь при отсортированном (упорядоченном) массиве... так что рендомно заполнять массив не вижу смысла.... только если с последующей его сортировкой...
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка вставками Katyunya Помощь студентам 1 20.04.2010 08:27
Сортировка вставками blind0482 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 02.12.2009 13:15
Сортировка вставками Pti44ka Помощь студентам 3 17.11.2009 16:49
помогите решить задачу на сортировку бинарными вставками... zhorzh2407 Помощь студентам 1 28.10.2008 04:14
Сортировка вставками глючит... Arkuz Общие вопросы Delphi 1 01.10.2007 21:44