Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 23.03.2014
Сообщений: 12

Пузырьковая сортировка - исправить код

17.07.2014, 14:56. Показов 902. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть массив
C++
1
unsigned char *buffer = new unsigned char[length * width]
. И мне нужно реализовать пузырьковую сортировку (сравниваются значения функции).

C++
1
2
3
4
5
6
7
8
9
10
unsigned char *tmp = new unsigned char[chromosomeSize];
for (int i = 0; i < length; i++) {
    for (int j = 0; j < length - i - 1; j++) {
        if (function(buffer, width, j) < function(buffer, width, j+1)) {
            std::copy(buffer, buffer + j*width, stdext::checked_array_iterator<unsigned char*>(tmp, j*width)); 
                        std::copy(buffer + j*width, buffer + (j + 1)*width, stdext::checked_array_iterator<unsigned char*>(buffer + j*width, (j + 1)*width)); //и тут проблема: мне нужно указать заполняемый массив (т.е. часть массива от buffer[0] до buffer[j*width] - как её выделить, чтобы передать в функцию copy?) а я вроде как указала buffer[j*width], хотя компилятор не ругался.
                     std::copy(tmp, tmp + width, stdext::checked_array_iterator<unsigned char*>(buffer + (j + 1)*width, width));// ну и здесь тоже самое с buffer[(j+1)*width]
 
            }
        }
Как мне выделить кусок (часть) массива, чтобы строки корректно отсортировались? Программа у меня работает, но неправильно. Боюсь, что непонятно объяснила, поэтому жду советов и вопросов.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.07.2014, 14:56
Ответы с готовыми решениями:

Пузырьковая сортировка, разобрать код
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; #include &lt;time.h&gt; #include &lt;iostream&gt; void main() { setlocale...

Сортировка (исправить код)
Помогите с сортировкой! Нужно сортировать исходные данные по убыванию!! Простой массив сортировать могу, а тут никак не получается)...

Сортировка (исправить код)
Нужно упорядочить записи по алфавиту, но у меня только меняет местами name! Помогите исправить код! #include &lt;iostream&gt; #include...

6
272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
17.07.2014, 22:05
Цитата Сообщение от khaleesi Посмотреть сообщение
Как мне выделить кусок (часть) массива, чтобы строки корректно отсортировались?
Укажте интервал в цикле, индекс элемента начала куска и индекс элемента конца куска.
0
0 / 0 / 1
Регистрация: 23.03.2014
Сообщений: 12
18.07.2014, 10:50  [ТС]
Цитата Сообщение от GuGo1991 Посмотреть сообщение
Укажте интервал в цикле, индекс элемента начала куска и индекс элемента конца куска.
А Вы не могли бы привести пример, а то мне не очень понятно? Какой бы цикл я не изменяла или добавляла, моя проблема не исчезает.

Добавлено через 2 часа 56 минут
Чтобы было понятнее: function сопоставляет какое-то число строке. Конечно, я могла бы воспользоваться ещё одним циклом для заполнения массива и всё бы получилось, но зачем лишние операции, поскольку столбцы у меня должны оставаться на своих местах? Мне нужно именно переставить соответственно значению функции строку, т.е. скопировать строку и поставить на нужное место, а не каждый её столбец.
0
272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
18.07.2014, 14:21
khaleesi, да, не очень понятно...
Покажите лучше пример результата операций, до сравнения и после перестановки.
0
0 / 0 / 1
Регистрация: 23.03.2014
Сообщений: 12
18.07.2014, 15:12  [ТС]
Цитата Сообщение от GuGo1991 Посмотреть сообщение
Покажите лучше пример результата операций, до сравнения и после перестановки.
Исходный массив Значение функции

010111110010011111100110 21
111010000111110110111001 21
001011011010000000100011 18
110011101010100111110011 24
011010101101001011110000 23
010100001110000110000110 23
010010101111101101001010 18
000011010110011101001101 22
110001110010000111011101 27
110010110110111111001001 22
110100101100010101010001 22
011110100011110010110000 19
010111101010010000100001 23
110101010011001110001101 22
001101010100010010101110 21
001100010011101100010111 22
111111111001111000100000 20
111110110110010100011010 18
011000011001110101010101 25
110001110100100001111100 20
000001110100100001111100 20
001101010100010101010001 20
110001110100100001111100 20
000011010110011101010000 21
110001110100100001111100 20
010100001110000100011010 19
111101110100100001111100 20
011010101100100111110011 21
110011101010101101001101 22
110011101000100001111100 26

Массив после сортировки: (тут вообще что-то непонятное, хотя понимаю, что напортачила, но никак сообразить не могу)

010111110010011111100110
111010000111110110111001
010111110010011111100110
110011101010100111110011
010111110010011111100110
010100001110000110000110
010111110010011111100110
000011010110011101001101
110001110010000111011101
010111110010011111100110
110100101100010101010001
010111110010011111100110
010111101010010000100001
010111110010011111100110
001101010100010010101110
001100010011101100010111
010111110010011111100110
010111110010011111100110
011000011001110101010101
010111110010011111100110
010111110010011111100110
010111110010011111100110
010111110010011111100110
000011010110011101010000
010111110010011111100110
010111110010011111100110
010111110010011111100110
011010101100100111110011
110011101010101101001101
110011101000100001111100

Добавлено через 16 минут
В общем, ладно, не советую в этом разбираться, потому что таким образом это невозможно, так что буду пыхтеть сама. Спасибо за отзыв)
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
18.07.2014, 15:20
khaleesi, представьте двумерный массив и сортируйте как массив массивов. Для этого даже можно использовать стандартный std::sort, только векторы использовать надо будет
0
272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
18.07.2014, 16:44
khaleesi, как я понял есть проблема во вложенном цикле:
C++
1
2
3
4
5
for (int i = 0; i < length; i++) {
    for (int j = i * width; j < i * width + width - 1; j++) { // Проход каждой строки
            //
        }
    }
Дальше не могу помочь, так как не знаю работу функции.
Ну и Psilon прав, можно использовать двумерный массив.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.07.2014, 16:44
Помогаю со студенческими работами здесь

Сортировка по алфавиту (исправить код)
Помогите отсортировать структуру по алфавиту (сортировка по tabl.name)! У меня ошибку выдает (( #include &lt;iostream&gt; #include...

сортировка массива (исправить код)
Нужно отсортировать массив по убыванию bals, но даже не компилируется! #include &lt;iostream&gt; #include &lt;iomanip.h&gt; using...

Сортировка пузырьком. Исправить код
Подскажите пжл. в чем ошибка, что не так написано, не хочет сортировать(( числа рандомно присваивает и на этом собственно все(( ...

Пузырьковая сортировка
Хочу спросить, это пузырьковая сортировка или нет? Как её правильно реализовать? Как оценить эффективность алгоритма сортировки по числу...

пузырьковая сортировка
Задача не сложная, но у меня нет времени ее решать: дан одномерный массив, нужно сделать пузырьковую сортировку по нему


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru