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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
rafull6
0 / 0 / 0
Регистрация: 22.02.2013
Сообщений: 32
#1

Сортировка двумерного массива Методом Шелла (по убыванию) - C++

18.05.2014, 01:02. Просмотров 2265. Ответов 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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
using namespace std;
 
int main()
{
    // Считываем размер массива,
    // который необходимо отсортировать
    int size;
    cin >> size;
 
    // Динамически выделяем память под
    // хранение массива размера size
    int *a = new int[size];
    
    // Считываем массив
    for (int i = 0; i < size; i++)
    {
        cin >> a[i];
    }
    int step = size / 2;//инициализируем шаг.
    while (step > 0)//пока шаг не 0
    {
      for (int i = 0; i < (size - step); i++)
                {
                    int j = i;
                    //будем идти начиная с i-го элемента
                    while (j >= 0 && a[j] > a[j + step])
                    //пока не пришли к началу массива
                    //и пока рассматриваемый элемент больше
                    //чем элемент находящийся на расстоянии шага
                    {
                        //меняем их местами
                        int temp = a[j];
                        a[j] = a[j + step];
                        a[j + step] = temp;
                        j--; 
                    }
                }
                step = step / 2;//уменьшаем шаг
            }    
    // Выводим отсортированный массив
    for (int i = 0; i < size; i++)
    {
        cout << a[i] << ' ';
    }
 
    return 0;
}
Добавлено через 3 часа 43 минуты
никто не поможет?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2014, 01:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка двумерного массива Методом Шелла (по убыванию) (C++):

Сортировка методом Шелла по убыванию - C++
Помогите дописать программу в 6 кейсе, что бы там было сортировка методом Шелла по убыванию. #include &quot;stdafx.h&quot; //...

Из промежутка [a;b) отсортируйте каждый столбец массива по убыванию методом Шелла - C++
Объявите двумерный вещественный массив, в котором n x m элементов. Выполните генерацию массива случайными вещественными числами. Из...

Сортировка массива методом Шелла - C++
добрый день нужна помощь, есть код #include &lt;iostream&gt; using namespace std; int main() { // razmer massiva, //...

Сортировка массива методом Шелла пожалуйста - C++
Имеется целочисленный массив ak сщстоящий из 17 элементов: 10, -7, 3, 4, 111, -45, 0, 1234, 52, 77, 23, -675, 1, 20934, 12, -89, 555 1....

Сортировка числового массива по возрастанию методом Шелла - C++
Здравствуйте, форумчане. Помогите пожалуйста изменить программу. Есть аналогичная программа только методом пузырька. //...

Сортировка двумерного массива методом выбора - C++
Создать двумерный массив 5х5. Заполнить случайными числами. Отсортировать выбором в порядке возрастания.

4
rikimaru2013
C++ Game Dev
2436 / 1130 / 240
Регистрация: 30.11.2013
Сообщений: 3,688
18.05.2014, 01:39 #2
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5


Как должно отсортировать?
Если
5 4 3 2 1
5 4 3 2 1
5 4 3 2 1

То повторите ваш код три раза ...
Если
5 5 5 4 4
4 3 3 3 2
2 2 1 1 1


То чем вам не одномерный массив??
0
rafull6
0 / 0 / 0
Регистрация: 22.02.2013
Сообщений: 32
18.05.2014, 02:56  [ТС] #3
rikimaru2013, у меня изначально дан двумерный массив 10х10 с чисами от -200 до 200.
Код который я выложил сортирует одномерный массив, мне же необходимо что бы отсортировался двумерный массив по убыванию. Сортироваться массив должен не по строкам и столбцам а полностью по целому массиву то есть самый первый элемент - самый большой в целом массиве, последний - наименьший.

пример:
если у нас такой массив:
5 6 9 8 4
6 3 2 1 4
6 9 8 7 4

на выходе нужно получить такое:

1 2 3 4 4
4 5 6 6 6
7 8 8 9 9

Добавлено через 51 минуту
rikimaru2013, извините, только сейчас вчитался в ваши слова и понял. Вы правы, это тот самый одномерный массив поделенный на строки. Вопрос, как его разделить на 10 строк? Просто, если я правильно подумал, необходимо двумерный массив перевести в одномерный, отсортировать, перевести в двумерный обратно? Эта схема понятна, но возможно ли избежать перевода в одномерный массив и сразу отсортировать двумерный массив?
0
rikimaru2013
C++ Game Dev
2436 / 1130 / 240
Регистрация: 30.11.2013
Сообщений: 3,688
18.05.2014, 04:28 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
элемент arr[9][9] и arr[0][99] одно и тоже - думаю вы поймёте о чём я

C++
1
2
3
4
5
6
7
8
9
#define SIZE 10
 
void main()
{
int arr[SIZE][SIZE] = {};
 
for(int i-0;i<SIZE*SIZE;i++)
// ...
}
1
rafull6
0 / 0 / 0
Регистрация: 22.02.2013
Сообщений: 32
18.05.2014, 13:41  [ТС] #5
rikimaru2013, спасибо за помощь!

Решил таким методом:

C
1
2
3
4
5
6
7
8
9
10
11
12
 int k=0;
 cout<<endl<<"1D Array: ";
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            mas[k]=a[i][j];
            cout<<mas[k]<<" ";
            k++;
        }
    }
  cout<<endl;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2014, 13:41
Привет! Вот еще темы с ответами:

Сортировка двумерного массива методом Выбора. Select sort - C++
Задание: Упорядочить каждую строку матрицы по убыванию. Отсортировал пузырьком, а вот &quot;Выбором&quot; никак. Весь день убил на это. Возможно,...

Отсортировать по убыванию последнюю строку квадратной матрицы (сортировка Шелла) - C++
Здравствуйте Передомной постала такая задача: надо вывести и отсортировать по убыванию последнюю строку квадратной матрицы. Я начал...

Сортировка методом Шелла С++ - C++
Помогите пожалуйста. Нужно отсортировать двухмерный массив методом Шелла. Но отсортировать отсортировать столбцы за значением последнего...

Сортировка методом Шелла - C++
Помогите! Нужно написать код программы сортировки одномерного массива по убыванию методом Шелла. Код нужен на экзамен.


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

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

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