Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
3 / 3 / 1
Регистрация: 14.08.2012
Сообщений: 78
1

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

27.08.2012, 00:18. Показов 1685. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Где-то ошибка в цикле... помогите)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
...
 
int array[3] = {3, 2, 1}, min = 0,  a = 0,  b = 0;
 
...
 
for(a = 1; a < size; ++a);
{
    
    for(b = 0; b < a; ++b);
    {
        if(array[a] < array[b])
        {
            min = array[b];
            array[b] = array[a];
            array[a] = min;
        }
    }
}
 
...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.08.2012, 00:18
Ответы с готовыми решениями:

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

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

Сортировка вставками
Добрый день, есть один вопрос #include &quot;stdafx.h&quot; #include&lt;iostream&gt; #include&lt;string&gt;...

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

7
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
27.08.2012, 00:25 2
Алгоритмы сортировок
1
3 / 3 / 1
Регистрация: 14.08.2012
Сообщений: 78
27.08.2012, 00:33  [ТС] 3
Цитата Сообщение от Jupiter Посмотреть сообщение
нееееее.
0
Модератор
Эксперт по электронике
8909 / 6678 / 918
Регистрация: 14.02.2011
Сообщений: 23,524
27.08.2012, 01:08 4
Цитата Сообщение от jon_illien Посмотреть сообщение
нееееее.
очень содержательно
ошибка то в чем выражается??
1
3 / 3 / 1
Регистрация: 14.08.2012
Сообщений: 78
27.08.2012, 01:23  [ТС] 5
Цитата Сообщение от ValeryS Посмотреть сообщение
очень содержательно
ошибка то в чем выражается??
да, выражалась..., чуть-чуть подредактировал. спасибо


C++
1
2
3
4
5
6
7
8
for (a = 1; a < size; ++a) 
    min = array[a]; 
    for (b = a - 1; b >= 0 && array[b] > min; --b)
    {
        array[b + 1] = array[b];
        array[b ] = min;
    }
}
0
0 / 0 / 0
Регистрация: 04.08.2012
Сообщений: 16
05.09.2012, 12:49 6
Доброго времени суток, не могу понять как работает код сортировки вставками, пришлось зубрить, а я этого органически не перевариваю, кто нибудь может помочь...
C++
1
2
3
4
5
6
7
8
9
10
11
12
void insertSort(T a[],int size)
{
T x;
int i,j;
for(i=0;i<size;i++)
{
    x=a[i];
    for(j=i-1;j>=0&&a[j]>x;j--)
        a[j+1]=a[j];
    a[j+1]=x;
}
}
1. входим в первый цикл и присваиваем переменной х значение элемента стоящего под № 0 ноль
2. Смотрим на второй цикл и сразу возникает вопрос: почему он без фигурных скобок?
3. Проверяем условие цикла 2, и видим при i=0 j=i-1 j=-1...условие цикла 2 не выполнено и не выполняется никаких действий.
4. Происходит возврат к циклу 1 и становится равным i=1
5. x присваивается x=a[1]
6. смотрим цикл N 2 j=1-1, соответственно j=0, тогда выполняется часть условия j>=0&&a[j]>x, и допустим, что a[j]>x, т.е впереди стоящий элемент больше следующего, будем считать условие выполнено
7.a[j+1]=a[j] элементу a[j+1] присваивается значение a[j] и что по сути равносильно a[i]=a[j] ведь i на одну единицу больше j, а затем a[j+1]=x присваевается значение х, и тут получается абракадабра, или все возвращается назад, a[j+1] присваевается значение предидущее значение a[j+1]...Потом j уменьшается на 1
Короче не фига не понял
0
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
05.09.2012, 14:41 7
ovli у тебя ошибка в первом цикле. i должна равняться 1.
вот пример работающего кода


Сортировка вставками
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
#include <iostream> 
using namespace std; 
 
void InterSort(int* array, int size)  
{  
    int temp; 
    int i, j; 
 
    for ( i = 1; i < size; i++)  
    { 
         temp = array[i]; 
         for ( j = i - 1; j >= 0 && array[j] > temp; --j) 
             array[j+1] = array[j];
             array[j+1] = temp; 
    } 
}
 
 
int main() 
{   
    setlocale(0, "rus");
    const int size = 10;
    int array[size] = { 12, 56, 7, 8, 11, 23, 45, 89, 54, 33 };  
    unsigned int i;
 
    cout << "Исходный массив " << endl;
    for ( i = 0; i < size; i++) 
        cout << array[i] << " "; 
    cout << endl << endl;  
 
    InterSort(array, size);
    cout << "Отсортированный массив " << endl; 
 
    for ( i = 0; i < size; i++) 
        cout << array[i] << " "; 
    cout << endl; 
}


теперь по самой сортировки

C++
1
2
3
4
5
6
7
8
9
10
int temp; 
    int i, j; 
 
    for ( i = 1; i < size; i++)  
    { 
         temp = array[i]; 
         for ( j = i - 1; j >= 0 && array[j] > temp; --j) 
             array[j+1] = array[j];
             array[j+1] = temp; 
    }
1. Элементу temp присваивается второй элемент в массиве
2. j на один меньше чем i в данном случае первый элемент
3 если j ,больше или равно 0 и первый элемент больше впереди стоящего они меняются местами

В общем сортировка начинается со второго элемента и элементы упорядочиваются с левой стороны от данной итерации цикла.
1
0 / 0 / 0
Регистрация: 04.08.2012
Сообщений: 16
05.09.2012, 15:05 8
Спасибо, но ошибка не у меня, а в учебном материале "Шага"
Миниатюры
Сортировка вставками  
0
05.09.2012, 15:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.09.2012, 15:05
Помогаю со студенческими работами здесь

Сортировка вставками
Необходимо отсортировать весь массив методом вставками парных чисел на возрастание const int N =...

Сортировка вставками
Помогите плиз немогу написать программу, незнаю с чего начать и что писать, может у кого что нить...

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

Сортировка вставками
Условие: Дан массив целых чисел. Ваша задача — отсортировать его в порядке неубывания с помощью...


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

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