Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
14 / 14 / 16
Регистрация: 26.01.2015
Сообщений: 213

Сортировка вставками

16.11.2016, 00:44. Показов 2676. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, форумчане.
Подскажите, пожалуйста, почему при первой реализации алгоритма массив упорядочивается, а при второй - нет. Ведь переменная buff - это и есть arr[i]:

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
#include<iostream>
using namespace std;
 
 
 
int main()
{
    const int size = 10;
    
    int arr[size] = { 18,2,14,9,22,1,7,-4,16,0 };
    int i = 0,j = 0;
    int buff = 0;
    for (i = 1; i < size; i++)
    {
        buff = arr[i];
        for (j = i - 1; j >= 0 && arr[j] >buff;j--)
        {
            swap(arr[j], arr[j+1]);
        }
    }
 
    for (int p = 0; p < size; p++)
    {
        cout << arr[p] << " ";
    }
 
    cout << endl;
 
    return 0;
}
А вот тут - нет:
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
#include<iostream>
using namespace std;
 
 
 
int main()
{
    const int size = 10;
    
    int arr[size] = { 18,2,14,9,22,1,7,-4,16,0 };
    int i = 0,j = 0;
    for (i = 1; i < size; i++)
    {
        
        for (j = i - 1; j >= 0 && arr[j] >arr[i];j--)
        {
            swap(arr[j], arr[j+1]);
        }
    }
 
    for (int p = 0; p < size; p++)
    {
        cout << arr[p] << " ";
    }
 
    cout << endl;
 
    return 0;
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.11.2016, 00:44
Ответы с готовыми решениями:

Сортировка вектора по полю(Сортировка вставками)
Здравствуйте! Нужно написать сортировку вектора по полю weight класса tomato. Вот класс: #pragma once #include &lt;iostream&gt; ...

Сортировка Шелла и сортировка вставками
Напишите программу для: 1)Сортировка вставкой 2)сортировка Шелла

Сортировка вставками
Помогите написать программу на языке &quot;СИ&quot; Сортировка вставками. Дана последовательность чисел a1, a2, …, an . Требуется представить ...

5
 Аватар для John999
230 / 113 / 79
Регистрация: 17.10.2016
Сообщений: 312
16.11.2016, 03:17
Лучший ответ Сообщение было отмечено Ofelion как решение

Решение

Цитата Сообщение от Ofelion Посмотреть сообщение
Ведь переменная buff - это и есть arr[i]:
после начала цикла значение arr[i] уже изменится из-за обмена
Цитата Сообщение от Ofelion Посмотреть сообщение
swap(arr[j], arr[j+1]);
для этого предварительно значение arr[i] сохраняется в переменной buff
1
14 / 14 / 16
Регистрация: 26.01.2015
Сообщений: 213
16.11.2016, 10:16  [ТС]
John999, а можешь на моём примере написать, как искажается значение arr[i] при неиспользовании переменной buff?
0
 Аватар для John999
230 / 113 / 79
Регистрация: 17.10.2016
Сообщений: 312
16.11.2016, 11:21
отладчиком можно пройтись и всё увидишь.

Добавлено через 1 минуту
Цитата Сообщение от Ofelion Посмотреть сообщение
на моём примере написать, как искажается значение arr[i] при неиспользовании переменной buff?
Вывод посмотри
это с buff
http://ideone.com/z4Euuj

i =1, buff: 2 2
i =2, buff: 14 14
i =3, buff: 9 9 9
i =4, buff: 22
i =5, buff: 1 1 1 1 1 1
i =6, buff: 7 7 7 7 7
i =7, buff: -4 -4 -4 -4 -4 -4 -4 -4
i =8, buff: 16 16 16
i =9, buff: 0 0 0 0 0 0 0 0 0

это без
http://ideone.com/K54H9F

i =1, arr[i]: 2 18
i =2, arr[i]: 14 18
i =3, arr[i]: 9 18
i =4, arr[i]: 22
i =5, arr[i]: 1 22
i =6, arr[i]: 7 22
i =7, arr[i]: -4 22
i =8, arr[i]: 16 22
i =9, arr[i]: 0 22
1
14 / 14 / 16
Регистрация: 26.01.2015
Сообщений: 213
16.11.2016, 11:32  [ТС]
John999, спасибо!
0
0 / 0 / 1
Регистрация: 07.10.2015
Сообщений: 4
16.11.2016, 12:32
У тебя переменная buff хранит значение элемента массива при проходе внешнего цикла. Что то вроде этого:
C++
1
2
3
4
5
6
7
8
...
int x;
...
for(int i=0;i<size;i++)
{
x=a[i];
...
}
Без этой переменной у тебя алгоритм работать не будет...
Вот тебе ссылка на подробное описание алгоритма
http://algolist.manual.ru/sort/insert_sort.php
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.11.2016, 12:32
Помогаю со студенческими работами здесь

Сортировка вставками
Задача: В компьютер по очереди поступают числа, из них форми*руется массив А так, чтобы он получался упорядоченным в порядке Каждый новый...

сортировка вставками
Начал изучать Кормена. Написал первый алгоритм. Не сортируется первый элемент массива. Код написан по книге. #include&lt;iostream&gt; ...

Сортировка вставками
Сортировка вставками реализация алгоритма на примере одномерных массивов характеристики алгоритма.

Сортировка вставками
Где-то ошибка в цикле... помогите) ... int array = {3, 2, 1}, min = 0, a = 0, b = 0; ... for(a = 1; a &lt; size;...

Сортировка вставками.
Пожалуйста помогите написать программу на языке &quot;си&quot; Дана последовательность чисел a1, a2, …, an . Требуется представить числа в...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru