30 / 6 / 9
Регистрация: 23.03.2015
Сообщений: 508
1

Сортировка массивов методом выбора

12.05.2015, 23:31. Показов 493. Ответов 5
Метки нет (Все метки)

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
#include <iostream>
#include <math.h>
#include <conio.h>
#include <cstdlib>
using namespace std;
 
void SetRussianLocale() { setlocale(LC_ALL, "Russian"); }
 
int main() {
  SetRussianLocale();
  cout << "Введите значения однородного массива: "; 
  const int n = 8;
  int A[n];
  for ( int i=0 ; i<n; i++ )
      cin >> A[i];
  for ( int i=0 ; i<n; i++ ) 
  for ( int j=i+1; j<=n; j++ )
  if ( A[i]>A[j] ) {
      int buf=A[i];
      A[i]=A[j];
      A[j]=buf;
  }
  cout << "Массив после сортировки: ";
  for (int i=0;i<n;i++)
  cout << A[i] << " ";
  getch();
  return 0;
}
посмотрите все ли верно иногда выдает ошибку превыше не знаю почему.
Вот я ввожу 1 2 3 4 4 6 7 8 выдает 1 2 3 4 4 6 7 8 а иногда не знаю почему -11124252 1 2 3 4 4 6 7
не понимаю в чем дело
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.05.2015, 23:31
Ответы с готовыми решениями:

Сортировка массивов методом выбора
В двумерной матрице 5*5 отсортировать диагональ методом выбора. Помогите пожалуйста.

Сортировка методом выбора и методом пузырьков
Доброго времени суток, форумчане). Я не спец в программировании, сразу говорю). Нам с другом дали...

Сортировка методом выбора
Выполните сортировку вещественного массива методом выбора: выбирается наименьший элемент и меняется...

Сортировка методом выбора
Задание: программа, сортирующая случайно сгенерированный список из 10 чисел методом выбора....

5
3 / 3 / 8
Регистрация: 29.12.2014
Сообщений: 29
12.05.2015, 23:47 2
первый цикл нужно рассматривать до предпоследнего элемента, последний элемент нет смысла сортировать
т.е. на 14 строке измени на
C++
1
for (int i = 0;  i < n - 1; i++)
на 17 строке вообще выход за пределы массива.
C++
1
for (int j = i + 1; j <= n; j++)
здесь j на последней итерации принимает значение 8, а максимальный индекс массива 7 (n-1)
измени на
C++
1
for (int j = i + 1; j < n; j++)
0
30 / 6 / 9
Регистрация: 23.03.2015
Сообщений: 508
13.05.2015, 15:23  [ТС] 3
Brandi, и так 16 и 24 тоже меняются соответственно?

Добавлено через 3 минуты
сделал как ты сказал ввел 1 2 3 4 4 7 6 8
выдало сразу 1 2 3 4 4 6 7 1257516

Добавлено через 3 минуты
Brandi, я же ввожу 8 значений в массив если ввести
Цитата Сообщение от Brandi Посмотреть сообщение
Код C++
1
for (int j = i + 1; j < n; j++)
то 7 значений тут поместятся, 1 2 3 4 5 6 7 т е i+1 0+1 1+1 2+1 3+1 4+1 5+1 6+1

Добавлено через 5 минут
Brandi, написал повторно
ввод 1 2 3 4 4 7 6 8
вывод 0 1 2 3 4 5 6 7

Добавлено через 2 минуты
кто нибудь? что за суета

Добавлено через 25 минут
что за суета? никто не поможет?

Добавлено через 1 час 33 минуты
Цитата Сообщение от Brandi Посмотреть сообщение
первый цикл нужно рассматривать до предпоследнего элемента, последний элемент нет смысла сортировать
т.е. на 14 строке измени на
Код C++
1
for (int i = 0; *i < n - 1; i++)
вот так сработал у тебя не 8 значений
C++
1
for (int i = 0; *i <= n - 1; i++)
Добавлено через 9 часов 44 минуты
кто реалезует эту же программу пузырьком

Добавлено через 12 минут
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
#include <iostream>
#include <math.h>
#include <conio.h>
#include <cstdlib>
using namespace std;
 
void SetRussianLocale() { setlocale(LC_ALL, "Russian"); }
 
int main() {
  SetRussianLocale();
  cout << "Введите значения однородного массива: "; 
  const int n = 8;
  int A[n];
  for (int i = 0; i <= n-1; i++)
      cin >> A[i];                          
  for (int i=0 ; i<n; i++ ) 
  for (int j = i + 1; j < n - i; j++)
  if ( A[j]>A[j + 1] ) {
      int buf = A[j];
      A[j] = A[j + 1];
      A[j + 1] = buf;
  }
  cout << "Массив после сортировки: ";
  for (int i = 0; i < n; i++)
  cout << A[i] << " ";
  getch();
  return 0;
}
ну хоть проверьте

Добавлено через 41 секунду
кто сделает методом вставки его же

Добавлено через 3 часа 11 минут
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
#include <iostream>
#include <math.h>
#include <conio.h>
#include <cstdlib>
using namespace std;
 
void SetRussianLocale() { setlocale(LC_ALL, "Russian"); }
 
int main() {
  SetRussianLocale();
  cout << "Введите значения однородного массива: "; 
  const int n = 8;
  int A[n];
  for (int j = 0; j <= n-1; j++)
      cin >> A[j];                          
  for (int j = 1 ; j < n; j++ ) { 
    int buff = A[j];
    int i = j - 1;
    while( i > 0 && A[i] > buff ) {
         A[i+1] = A[i];
         i = i - 1;
    }
    A[i+1] = buff;
    }
  cout << "Массив после сортировки: ";
  for (int j = 0; j < n; j++)
  cout << A[j] << " ";
  getch();
  return 0;
}
метод вставки

Добавлено через 5 минут
мда написал так написал но не особо понял как работает
0
3 / 3 / 8
Регистрация: 29.12.2014
Сообщений: 29
13.05.2015, 20:31 4
в коде первого поста пытаешься реализовать методом пузырька, в двойном цикле меняешь местами все элементы по условию. А в методе выбора для элемента первого цикла во втором цкле сначала ищется мин.элемент и только потом они меняются местами.

https://ru.wikipedia.org/wiki/... 0%BE%D0%BC

в первом цикле нужно создать переменную, которая хранит индекс мин.элемента. вот методом выбора

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
#include <iostream>
#include <math.h>
#include <conio.h>
#include <cstdlib>
using namespace std;
 
void SetRussianLocale() { setlocale(LC_ALL, "Russian"); }
 
int main() {
    SetRussianLocale();
    cout << "Введите значения однородного массива: ";
    const int n = 8;
    int A[n];
 
    for (int i = 0; i<n; i++)
        cin >> A[i];
 
    for (int i = 0; i < n-1; i++)
    {   
        /*для текущего списка храним индекс мин.элемента. 
        В качестве начального берем индекс первого неотсортированной позиции*/
        int minIndex = i;
 
        for (int j = i + 1; j < n; j++)//в цикле ищем и храним индекс мин. элемента
        {
            if (A[j] < A[minIndex])
                minIndex = j;   
        }
 
        if (i != minIndex)//меняем местами
        {
            int buf = A[i];
            A[i] = A[minIndex];
            A[minIndex] = buf;
        }
    }
 
    cout << "Массив после сортировки: ";
    for (int i = 0; i<n; i++)
        cout << A[i] << " ";
        getch();
    return 0;
}
0
88 / 84 / 31
Регистрация: 18.11.2013
Сообщений: 390
13.05.2015, 20:37 5
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
#include <iostream>
#include <math.h>
#include <conio.h>
#include <cstdlib>
using namespace std;
 
void SetRussianLocale() { setlocale(LC_ALL, "Russian"); }
 
int main() {
  SetRussianLocale();
  cout << "Введите значения однородного массива: "; 
  const int n = 8;
  int A[n];
  for (int j = 0; j < n; j++)
      cin >> A[j];     
int mini;
for (int i=0;i<n;i++)              
{       
mini = i;
  for (int j = i+1 ; j < n; j++ ) 
   { 
     if(a[j]<a[mini])
     mini = j;
    }
int temp=a[i];
a[i]=a[mini];
a[mini]=temp;
}
  cout << "Массив после сортировки: ";
  for (int j = 0; j < n; j++)
  cout << A[j] << " ";
  getch();
  return 0;
}
0
30 / 6 / 9
Регистрация: 23.03.2015
Сообщений: 508
13.05.2015, 22:32  [ТС] 6
я записал три метода тут пожалуйста посмотрите верни ли они

Добавлено через 21 секунду
они в других моих постах
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.05.2015, 22:32
Помогаю со студенческими работами здесь

Сортировка методом выбора в C++
Сортировать численные значения по значению абсолютной величины методом выбора в C++ Где ошибка? ...

Сортировка методом выбора
Ребят помогите. нужно сортирнуть по возростанию средней оценки студентов методом выбора. #include...

Сортировка методом выбора
Здравствуйте! Подскажите пожалуйста как сортировкой методом выбора посчитать количество обменов...

Сортировка методом выбора С++
не подскажите что не так в программе #include &lt;iostream.h&gt; #include &lt;stdlib.h&gt; int n=15; float...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru