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

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

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

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

08.11.2013, 13:14. Просмотров 287. Ответов 3
Метки нет (Все метки)

программа сортирует массив по возрастанию. кусок кода который выполняет сортировку взял с инета. но преп придрался к оформлению и после того как расставил все скобки пошел бесконечный цикл.
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++
Обьясните, что неправильно в этой программе. #include &lt;iostream&gt; using namespace std; void swap (int* a, int *b); int...

Где тут ошибка то? - C++
#include &lt;iostream&gt; using namespace std; int main() { int b=1, c=0; while (1) { if (b==13); ...

Где тут ошибка, подскажите плз! - C++
#include &quot;stdafx.h&quot; #include &lt;windows.h&gt; #include &lt;iostream&gt; using namespace std; void main() { SetConsoleOutputCP(1251); ...

присваивание char - где тут может быть ошибка? - C++
Есть простая функция, обратную строку должна выдавать, а вместо этого передает &quot;необработаное исключение&quot; проблема в s = s; s =...

Программа не работает.Какая тут ошибка? - C++
#include &lt;fstream&gt; #include &lt;iostream&gt; using namespace std; int main(void){ ifstream in(&quot;input.txt&quot;); if(!in.is_open()) ...

Программа не работает. Какая тут ошибка? - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;math.h&gt; using namespace std; int fact(int n); { ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Greeezly
6 / 6 / 1
Регистрация: 31.08.2012
Сообщений: 230
08.11.2013, 13:27 #2
ты индексы элементов что ли меняешь?
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
не дано... именно перемешиванием нужно
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2013, 19:24
Привет! Вот еще темы с ответами:

Написать программу для сортировки массива по возрастанию - C++
Написать программу в с++: Дан массив целых чисел. Написать программу для сортировки массива по возрастанию.

Разработать программу сортировки одномерного массива по возрастанию/убыванию - C++
Разработать программу сортировки одномерного массива по возрастанию/убыванию. Элементы массива находятся в файле. Программа должна...

Использование рекурсивной функции для сортировки массива по возрастанию - C++
Описать рекурсивную функцию сортировки по возрастанию массива с n целых чисел. Идея метода такова: поместить наименьший элемент на первую...

Алгоритм сортировки числового массива методом пузырька (по возрастанию) - C++
Помогите пожалуйста. Завал в институте( С ++ не знаю совсем, очень сложно (


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.11.2013, 19:24
Ответ Создать тему
Опции темы

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