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

Где тут ошибка? Программа сортировки массива по возрастанию - C++

Восстановить пароль Регистрация
 
dimassasin
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 14
08.11.2013, 13:14     Где тут ошибка? Программа сортировки массива по возрастанию #1
программа сортирует массив по возрастанию. кусок кода который выполняет сортировку взял с инета. но преп придрался к оформлению и после того как расставил все скобки пошел бесконечный цикл.
if и swap были в одной строке. что я переписал не так? помогите разобраться пожалуйста
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <iostream>
#include <locale>
#include <algorithm>
 
using namespace std;
 
void Swap(int *Mas, int i)
{
int temp;
temp=Mas[i];
Mas[i]=Mas[i-1];
Mas[i-1]=temp;
}
void ShakerSort(int *Mas, int Start, int N)
{
    int Left, Right, i;
    Left=Start;
    Right=N-1;
    while (Left<=Right)
    {
        for (i=Right; i>=Left; i--)
        {
            if (Mas[i-1]>Mas[i]) 
            {
                Swap(Mas, i);
                Left++;
            }
        }
        for (i=Left; i<=Right; i++)
        {
            if (Mas[i-1]>Mas[i]) 
            {
                Swap(Mas, i);
                Right--;
            }
    }
    }
}
 
 
 
int main(int argc, char** argv) {
    int N;
    setlocale (LC_ALL, "rus");
    cout<<"Введите количество элементов массива ";
    cin>>N;
    int *a=new int [N];
    for (int i=0; i<N; i++)
    {
        cout<<i+1<<" ";
        cin>>a[i]; 
    }
    
  ShakerSort(a, 1, N);
  
    for (int i=0; i<N; i++)
    {   
        cout<<a[i]<<" ";//похоже что бесконечный цикл. 1 ядро-100%
    }
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2013, 13:14     Где тут ошибка? Программа сортировки массива по возрастанию
Посмотрите здесь:

C++ Где тут ошибка, подскажите плз!
Где тут ошибка? C++
присваивание char - где тут может быть ошибка? C++
C++ Где тут ошибка то?
Написать программу для сортировки массива по возрастанию C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Greeezly
 Аватар для Greeezly
6 / 6 / 1
Регистрация: 31.08.2012
Сообщений: 230
08.11.2013, 13:27     Где тут ошибка? Программа сортировки массива по возрастанию #2
ты индексы элементов что ли меняешь?
Nik-Hander
 Аватар для Nik-Hander
2 / 2 / 0
Регистрация: 16.08.2013
Сообщений: 39
08.11.2013, 14:01     Где тут ошибка? Программа сортировки массива по возрастанию #3
А простым пузырьком не дано?
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 <iostream>
#include <locale>
 
using namespace std;
 
void BubbleSort(int* sort_el, int length)   // сортировка пузырьком
{
    int time = 0;   // временная переменная, хранящая элемент массива
    bool exit = false;   // болевая переменная для выхода из цикла, если массив отсортирован
    while(!exit)
    {
        exit = true;
        for (int k = 0; k < (length - 1); k++)
        {
            if (sort_el[k] > sort_el[k + 1])
            {
                time = sort_el[k];
                sort_el[k] = sort_el[k + 1];
                sort_el[k + 1] = time;
                exit = false;
            }
        }
    }
}
 
int main()
{
    int N;
    setlocale (LC_ALL, "rus");
    cout << "Введите количество элементов массива ";
    cin >> N;
    int *a = new int[N];
    for (int i = 0;i < N;i++)
    {
        cout << i + 1 << " ";
        cin >> a[i];
    }
 
    BubbleSort(a, N);
 
    for (int i = 0;i < N;i++)
    {
        cout << a[i] << " ";
    }
    return 0;
}
dimassasin
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 14
08.11.2013, 19:24  [ТС]     Где тут ошибка? Программа сортировки массива по возрастанию #4
не дано... именно перемешиванием нужно
Yandex
Объявления
08.11.2013, 19:24     Где тут ошибка? Программа сортировки массива по возрастанию
Ответ Создать тему
Опции темы

Текущее время: 21:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru