Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
MMt
0 / 0 / 0
Регистрация: 29.04.2014
Сообщений: 169
#1

Почему не сортируется массив? - C++

18.06.2014, 19:05. Просмотров 394. Ответов 19
Метки нет (Все метки)

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
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
 
 
int main(){
    int s = 9;
    setlocale(0,"");
    int Arr2[s];
    int val = 0;
    
    
    for(int k=0; k<s; ++k)
        Arr2[k]=rand()%10;
    
    for(int k=0; k<s; ++k)
        cout    <<Arr2[k]<< ", \n";
    
    cout    <<"Ñîðòèðóþ \n";
    
    for(int i = 0; i<s;++i){        
        if(Arr2[i]>Arr2[i+1]){
            int val=0;
            val=Arr2[i+1];
            Arr2[i+1]=Arr2[i];
            Arr2[i]=val;    
        }
    }
    
    for(int i=0; i<s; ++i)
        cout    << Arr2[i]<< ", ";
    
    return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2014, 19:05     Почему не сортируется массив?
Посмотрите здесь:

Почему не сортируется массив? - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; using namespace std; int main() { setlocale(LC_ALL, &quot;Rus&quot;); ...

Почему не сортируется массив? - C++
using namespace std; void scan(int * mass) { for( int i = 0; i &lt; 10; i++) { cin &gt;&gt; mass ; } } void print ( int * mass...

Почему не сортируется вектор структур? - C++
Выводится ошибка c:\qtsdk\mingw\bin\..\lib\gcc\mingw32\4.4.0\include\c++\bits\stl_algo.h:89: error: passing 'const Task' as 'this' argument...

Почему данная реализация связного списка не сортируется по убыванию? - C++
Сформировать список из вещественных чисел. Упорядочить список по убыванию. почему не сортирует по убыванию? Помогите, пожалуйста. ...

Массив не сортируется - C++
Здравствуйте. Программа не сортирует массив, не могу разобраться в чем проблема. Сортировка вставкой. (Да, я знаю,что она достаточно...

время за которое сортируется массив - C++
Подскажите как узнать время за которое отсортировался массив (mas) Внизу программы где используется InsertSort и массив уходит на...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,954
Записей в блоге: 27
18.06.2014, 19:09     Почему не сортируется массив? #2
Цитата Сообщение от MMt Посмотреть сообщение
for(int i = 0; i<s;++i){* * * *
* * * * if(Arr2[i]>Arr2[i+1]){
* * * * * * int val=0;
* * * * * * val=Arr2[i+1];
* * * * * * Arr2[i+1]=Arr2[i];
* * * * * * Arr2[i]=val;* *
* * * * }
* * }
Потому что одного раза маловато будет.

Добавлено через 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
38
39
40
41
42
43
44
45
46
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
 
 
int main(){
    int s = 9;
    setlocale(0,"");
    int *Arr2 = new int[s];
    int val = 0;
    
    
    for(int k=0; k<s; ++k)
        Arr2[k]=rand()%10;
    
    for(int k=0; k<s; ++k)
        cout    <<Arr2[k]<< ", \n";
    
    cout    <<"Сортирую \n";
    
    for (int i = 2; i < s; ++i)
    {
        int key = Arr2[i];
        int j = i - 1;
        while ((j > 0)&&(Arr2[j] > key))
        {
            Arr2[j + 1] = Arr2[j];
            j -= 1;
            Arr2[j + 1] = key;
        }
    }
    if (Arr2[0] > Arr2[1]) 
    {
        int temp = Arr2[1];
        Arr2[1] = Arr2[0];
        Arr2[0] = temp;
    }
    
    for(int i=0; i<s; ++i)
        cout    << Arr2[i]<< ", ";
    
    delete []Arr2;
    system("pause>>null");
}
Nicolas
0 / 0 / 0
Регистрация: 16.06.2014
Сообщений: 19
18.06.2014, 19:13     Почему не сортируется массив? #3
Сортировки в один цыкл не существует. Как минимум в два цикла.

http://kvodo.ru/puzyirkovaya-sortirovka.html
Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,954
Записей в блоге: 27
18.06.2014, 19:13     Почему не сортируется массив? #4
Цитата Сообщение от Nicolas Посмотреть сообщение
Сортировки в один цыкл не существует. Как минимум в два цикла.
Я вот вложилась.
MMt
0 / 0 / 0
Регистрация: 29.04.2014
Сообщений: 169
18.06.2014, 19:21  [ТС]     Почему не сортируется массив? #5
что то вы меня совсем запутали как это не существует? простой массив в 1 строку... если А больше Б то прост поменять их местами. в чем проблема? почему так нельзя сделать?
Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,954
Записей в блоге: 27
18.06.2014, 19:23     Почему не сортируется массив? #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от MMt Посмотреть сообщение
что то вы меня совсем запутали как это не существует? простой массив в 1 строку... если А больше Б то прост поменять их местами. в чем проблема? почему так нельзя сделать?
о_О Вы меня удивляете.
Есть у Вас - 6 5 8 1.
По Вашему алгоритму -
6 больше 5, меняем местами.
Получаем 5 6 8 1.
Шесть меньше восьми, пропускаем.
Восемь больше единицы - меняем.
Получаем 5 6 1 8.
Всё. Конец.
Почему же не отсортирован массив?
LifeMoroz
11 / 11 / 3
Регистрация: 12.10.2013
Сообщений: 54
18.06.2014, 19:24     Почему не сортируется массив? #7
Цитата Сообщение от Nicolas Посмотреть сообщение
Сортировки в один цыкл не существует. Как минимум в два цикла.
Почему простите?
Простейший пример
сортировка массива при помощи одного цикла

Пузырьком не получится в один цикл это другой вопрос.

Цитата Сообщение от Тамика Посмотреть сообщение
Я вот вложилась.
У вас два цикла, или глаза меня подводят?
Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,954
Записей в блоге: 27
18.06.2014, 19:25     Почему не сортируется массив? #8
Цитата Сообщение от LifeMoroz Посмотреть сообщение
У вас два цикла, или глаза меня подводят?
Внутренний вайл, разве что, может Вас смущать. Но его можно заменить ифом. И всё.
А могу и ровно в один цикл.
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
18.06.2014, 19:26     Почему не сортируется массив? #9
MMt, потому что массив будет осортирован только частично
вот тебе пример
исходный массив: 2 1 0 3
1й шаг - меняем 2 и 1. итог: 1 2 0 3
переходим ко второму элементу (2):
2й шаг - меняем 2 и 0. итог 1 0 2 3
дальше будет просматриваться 3й элемент, и к первому возврата уже не будет, как видим, 1 не меньше нуля

в вообще вот, учи
MMt
0 / 0 / 0
Регистрация: 29.04.2014
Сообщений: 169
18.06.2014, 19:28  [ТС]     Почему не сортируется массив? #10
доперло спасибо)
LifeMoroz
11 / 11 / 3
Регистрация: 12.10.2013
Сообщений: 54
18.06.2014, 19:28     Почему не сортируется массив? #11
Цитата Сообщение от Тамика Посмотреть сообщение
Внутренний вайл, разве что, может Вас смущать. Но его можно заменить ифом. И всё.
А могу и ровно в один цикл.
Если честно, весьма интересно, как вы реализуете пузырек в 1 цикл.
Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,954
Записей в блоге: 27
18.06.2014, 19:28     Почему не сортируется массив? #12
Цитата Сообщение от LifeMoroz Посмотреть сообщение
Если честно, весьма интересно, как вы реализуете пузырек в 1 цикл.
При чём здесь пузырёк? Я говорю об алгоритмах сортировки. И в своём коде у меня не пузырёк.
MMt
0 / 0 / 0
Регистрация: 29.04.2014
Сообщений: 169
18.06.2014, 19:32  [ТС]     Почему не сортируется массив? #13
сделал немного проще.
C++
1
2
3
4
5
6
7
8
9
10
11
    cout    <<"Ñîðòèðóþ \n";
    for(int k=0; k<s;k++){
    for(int i = 0; i<s; ++i){       
        if(Arr2[i]>Arr2[i+1]){
            int val=0;
            val=Arr2[i+1];
            Arr2[i+1]=Arr2[i];
            Arr2[i]=val;    
            }
        }
    }
LifeMoroz
11 / 11 / 3
Регистрация: 12.10.2013
Сообщений: 54
18.06.2014, 19:33     Почему не сортируется массив? #14
Цитата Сообщение от Тамика Посмотреть сообщение
При чём здесь пузырёк?
Потому что в аффтор написал (пусть не работающий) пузырек, может быть я ошибаюсь, но это привело меня к выводу что мы говорим об этом алгоритме.
Прошу прощения, что Вас не понял.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2014, 19:33     Почему не сортируется массив?
Еще ссылки по теме:

Неправильно сортируется массив по возрастанию и не находится минимальный элемент - C++
#include &lt;windows.h&gt; #include &lt;iostream.h&gt; #include &lt;math.h&gt; #include &lt;time.h&gt; template &lt;class Type&gt; void vvod(Type *a,int n); ...

Почему возможно задать массив с размером -1 (почему такое вообще компилируется)? - C++
Всем привет. Долгое время не писал на плюсах, решил пройтись по основам, вспомнить. По непонятным для меня причинам этот код...

Блинная сортировка массива, не сортируется последний элемент - C++
Товарищи офицеры. Прошу посмотреть мой код блинной сортировки для одномерного массива. Дело в том что он не сортирует последний элемент....

Связный список, в котором информация о книгах сортируется по убыванию стоимости - C++
Нужно запрограммировать связный список, в котором информация о книгах сортируется по убыванию стоимости. Есть код: #include...


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

Или воспользуйтесь поиском по форуму:
Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,954
Записей в блоге: 27
18.06.2014, 19:33     Почему не сортируется массив? #15
Цитата Сообщение от MMt Посмотреть сообщение
for(int k=0; k<s;k++){
А это зачем?..
Yandex
Объявления
18.06.2014, 19:33     Почему не сортируется массив?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru