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

Ошибка в сортировке методом выбора - C++

Восстановить пароль Регистрация
 
jon_illien
2 / 2 / 1
Регистрация: 14.08.2012
Сообщений: 78
25.08.2012, 18:10     Ошибка в сортировке методом выбора #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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#include <time.h>
//#include <iostream>
 
#define size 10
 
//using namespace std;
 
int main(void)
{SetConsoleOutputCP (1251);
puts ("Selection sorting\n\n");
 
 
int array[size] = {0}, buffer = 0, min = 0, temp = 0;
srand((unsigned)(time(0))); rand();
 
printf ("Вывод беспорядочных элементов массива:\n");
 
for(int z = 0; z < size; z++)                                   //Заполнение массива случ. числами и их вывод
{
    array[z] = rand () % 10 + 1;
    printf ("%d ", array[z]);
}puts ("\0");
 
 
 
//////////////////////////////////////////////////////////////////////////////
for(int a = 0; a < size - 1; a++)                               //Метод сортировки
{
    min = array[a];
 
    for(int b = 0; b < size - 1; b++)
    {
        if (min > array[b + 1])
        {
            min = array[b + 1];
            temp = b + 1;
        }
    }
    buffer = array[a];
    array [a] = array[temp];
    array[temp] = buffer;
}
printf (" min el = %d \n", temp);
 
 
 
//////////////////////////////////////////////////////////////////////////////
 
printf ("Вывод упорядоченных элементов массива:\n");
for (int d = 0; d < size; d++)                                  //Вывод отсортированного массива
{
    printf ("%d ", array[d]);
}
 
getch();
puts("\n\n");
 
}
Добавлено через 14 минут
Вот кое-что изменил:

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
#include <stdio.h>
//#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#include <time.h>
//#include <iostream>
 
#define size 10
 
//using namespace std;
 
int main(void)
{SetConsoleOutputCP (1251);
puts ("Selection sorting\n\n");
 
 
int array[size] = {0}, buffer = 0, min = 0, temp = 0, exchange = 0;
srand((unsigned)(time(0))); rand();
 
printf ("Вывод беспорядочных элементов массива:\n");
 
for(int z = 0; z < size; z++)                                   //Заполнение массива случ. числами и их вывод
{
    array[z] = rand () % 10 + 1;
    printf ("%d ", array[z]);
}puts ("\0");
 
 
 
//////////////////////////////////////////////////////////////////////////////
for(int a = 0; a < size - 1; a++)                               //Метод сортировки
{
 
    min = array[a];
 
    for(int b = 0; b < size - 1; b++)
    {
        exchange = 0;
 
        if (min > array[b + 1])
        {
            min = array[b + 1];
            temp = b + 1;
            exchange = 1;
        }
    }
 
    if(exchange)
    {
        buffer = array[a];
        array [a] = array[temp];
        array[temp] = buffer;
    }
}
printf (" min el = %d \n", temp);
 
 
 
//////////////////////////////////////////////////////////////////////////////
 
printf ("Вывод упорядоченных элементов массива:\n");
for (int d = 0; d < size; d++)                                  //Вывод отсортированного массива
{
    printf ("%d ", array[d]);
}
 
getch();
puts("\n\n");
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.08.2012, 18:10     Ошибка в сортировке методом выбора
Посмотрите здесь:

C++ Ошибка в порязрядной сортировке?!
C++ Ошибка в сортировке
Ошибка в сортировке C++
Ошибка в пирамидальной сортировке C++
C++ Ошибка в быстрой сортировке
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
25.08.2012, 18:22     Ошибка в сортировке методом выбора #2
Немного подправил ваш алгоритм:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
for(int a = 0; a < size - 1; a++)                               //Метод сортировки
{
 
    min = array[a];
 
    exchange = 0;
    for(int b = a+1; b < size; b++)
    {
 
        if (min > array[b])
        {
            min = array[b];
            temp = b;
            exchange = 1;
        }
    }
 
    if(exchange)
    {
        array[temp] = array[a];
        array [a] = min;
    }
}
jon_illien
2 / 2 / 1
Регистрация: 14.08.2012
Сообщений: 78
25.08.2012, 18:50  [ТС]     Ошибка в сортировке методом выбора #3
Цитата Сообщение от Thinker Посмотреть сообщение
Немного подправил ваш алгоритм:]
Как?!) Работает!) Спасибо огромное!! А, вы сами проверяли или по памяти написали? Я маялся дня 2 с этим.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
25.08.2012, 18:54     Ошибка в сортировке методом выбора #4
Цитата Сообщение от jon_illien Посмотреть сообщение
А, вы сами проверяли или по памяти написали?
Не проверял, просто алгоритм простой, да и общеизвестный.
Yandex
Объявления
25.08.2012, 18:54     Ошибка в сортировке методом выбора
Ответ Создать тему
Опции темы

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