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

Сортировка пузырьком - C++

Восстановить пароль Регистрация
 
warwar123
0 / 0 / 0
Регистрация: 30.05.2013
Сообщений: 3
30.05.2013, 06:23     Сортировка пузырьком #1
Не удается сделать сортировку пузырьком (то что после //1111), не сортирует, либо ошибки в памяти.

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
// spisok.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include "conio.h"
 
using namespace std;
 
 
struct Item 
{
int info;
Item* next;
};
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
 
Item *first = NULL; //Указатель на начало списка
Item *p;
 
int i;
 
// Создать список
for (;;) 
{
// Вводить числа, пока не введем 0
cin >> i;
//if (!i) break;
if (i==999) break;
 
// Создать новый элемент списка
p = new Item;
p->info = i;
 
// Присоединить новый элемент к началу списка
p->next = first ;
first = p;
}
 
 
 
 
//1111
 
Item *q;
 
 
p = first;
 
while (p) 
{
 
    if((p->info)>(p->next->info))
    {
 
        q=p;
 
        p=p->next;
 
        p->next=q;
 
    }
 
p = p->next;
 
 
}
 
 
 
 
//2222
 
 
 
 
 
 
 
// Пройти список и вывести элементы
p = first;
while (p) {
cout << p->info << " ";
p = p->next;
}
 
// Пройти список и удалить элементы
while (first) 
{
p = first;
first = first->next ;
delete p;
}
 
getch();
 
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2013, 06:23     Сортировка пузырьком
Посмотрите здесь:

C++ Сортировка пузырьком с++
C++ сортировка пузырьком
Сортировка пузырьком. C++
Сортировка пузырьком C++
Сортировка пузырьком C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
30.05.2013, 06:40     Сортировка пузырьком #2
строка 28. Какое условие выхода из цикла?

Добавлено через 2 минуты
строка 40 -- p->next устанавливается в нуль постоянно.

Добавлено через 1 минуту
тяжело читать. Это не список.
warwar123
0 / 0 / 0
Регистрация: 30.05.2013
Сообщений: 3
20.06.2013, 10:21  [ТС]     Сортировка пузырьком #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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
// spisok.cpp : Defines the entry point for the console application.
//
 
#include <iostream>
#include <conio.h>
 
 
struct Item
{
int info;
Item* next;
};
 
 
 
main()
{
 
Item *first = NULL;
Item *p;
 
int i;
 
 
for (;;)
{
 
cin >> i;
 
if (i==0) break;
 
 
p = new Item;
p->info = i;
 
 
p->next = first;
first = p;
}
 
 
//1111
 
 
Item *q;
 
for(int i=0;i<100;i++)
{
 
p = first;
 
while (p)
{
 
    if((p->info)>(p->next->info))
    {
 
         q=p;
 
         p=p->next;
 
        p->next=q;
 
    }
 
p = p->next;
 
 
}
 
}
 
 
//2222
 
 
 
 
p = first;
while (p) {
cout << p->info << " ";
p = p->next;
}
 
 
while (first)
{
p = first;
first = first->next ;
delete p;
}
 
getch();
 
}
Проверял, все кроме сортировки работает правильной, в 40 строке не должно быть проблем

Сортировка идет после комментария //1111
Вася1q
 Аватар для Вася1q
21 / 21 / 0
Регистрация: 13.09.2011
Сообщений: 311
20.06.2013, 10:29     Сортировка пузырьком #4
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
#include <iostream>
#include <list>
#include "sort.hpp"
 
using namespace std;
 
int main()
{
    typedef list<int> DataType;
    int myints[] = {16,2,77,29,45,98,12,23,78,55};
    DataType a(myints, myints + sizeof(myints) / sizeof(int) );
 
    for(DataType::iterator i = a.begin(); i != a.end();++i){
        cout << *i << " ";
    }
    cout << endl;
    DataType::iterator start(a.begin()), finish(a.end());
    Odd_even_sort(start,finish);
    for(DataType::iterator i = a.begin(); i != a.end();++i){
        cout << *i << " ";
    }
    cout  << "\a" << 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
//файл
#ifndef SORT_HPP_INCLUDED
#define SORT_HPP_INCLUDED
using namespace std;
template<class iter>
void Odd_even_sort(iter& start, iter& finish){
bool sorted = false;
while(!sorted){
    sorted=true;
    iter finish1(finish), start1;
    --finish1;
 
    for(iter i = start; i != finish1; ++i){
         start1=i;
         ++start1;
        if( *i > *start1 ){
            swap(*i,*start1);
            sorted = false;
        }
        }
 
}
}
 
#endif // SORT_HPP_INCLUDED
warwar123
0 / 0 / 0
Регистрация: 30.05.2013
Сообщений: 3
20.06.2013, 10:42  [ТС]     Сортировка пузырьком #5
Тоесть, надо то что после //файл, положить в отдельный файл и он подключается #include "sort.hpp"

Но если так, то выдаются ошибки:
Миниатюры
Сортировка пузырьком  
Вася1q
 Аватар для Вася1q
21 / 21 / 0
Регистрация: 13.09.2011
Сообщений: 311
20.06.2013, 10:54     Сортировка пузырьком #6
Новая папка.rar
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2013, 10:58     Сортировка пузырьком
Еще ссылки по теме:

C++ Сортировка пузырьком
C++ Сортировка пузырьком
C++ Сортировка пузырьком

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

Или воспользуйтесь поиском по форуму:
Вася1q
 Аватар для Вася1q
21 / 21 / 0
Регистрация: 13.09.2011
Сообщений: 311
20.06.2013, 10:58     Сортировка пузырьком #7
за + извеняюсь в последних строков в файле

Добавлено через 51 секунду
Будешь должен)
Yandex
Объявления
20.06.2013, 10:58     Сортировка пузырьком
Ответ Создать тему
Опции темы

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