С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 02.10.2014
Сообщений: 136

Многопоточная сортировка Шелла

29.05.2015, 20:25. Показов 4003. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача стоит в том, что надо создать массив чисел, разделить его на две части, в разных потоках отсортировать с помощью сортировки Шелла. Как это можно реализовать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.05.2015, 20:25
Ответы с готовыми решениями:

Многопоточная сортировка Шелла не делится потоки
Здравствуйте! Мне нужно сделать многопоточную сортировку методом Шелла с визуализацией работы потоков. Почему-то поток у меня создается...

Многопоточная сортировка
Здравствуйте, форумчане. Решаю задачу обработки данных большого размера 1 гб . Данные нужно отсортировать по возрастанию за ограниченное...

Многопоточная сортировка: синхронизация
Добрый день, только начал изучать параллельное программирование и решил написать параллельную битоническую сортировку. Суть её в том, что...

19
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
29.05.2015, 20:32
Цитата Сообщение от NAlt Посмотреть сообщение
Как это можно реализовать?
При помощи мозга.
0
0 / 0 / 0
Регистрация: 02.10.2014
Сообщений: 136
29.05.2015, 20:45  [ТС]
castaway, а то я не понимаю
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
29.05.2015, 20:48
NAlt, а зачем тогда спрашиваешь?
0
0 / 0 / 0
Регистрация: 02.10.2014
Сообщений: 136
29.05.2015, 20:52  [ТС]
castaway, чтобы мне подсказали код, хотя бы приблизительно
зачем обычно задают вопросы на форумах
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
29.05.2015, 21:00
Цитата Сообщение от NAlt Посмотреть сообщение
чтобы мне подсказали код, хотя бы приблизительно
C++
1
2
3
4
int main()
{
    ... тут код ...
}
Цитата Сообщение от NAlt Посмотреть сообщение
зачем обычно задают вопросы на форумах
Чтобы им помогли, а не делали за них.
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
29.05.2015, 21:06
ThreadFactorial.7z

думаю поможет
0
0 / 0 / 0
Регистрация: 02.10.2014
Сообщений: 136
29.05.2015, 21:16  [ТС]
castaway, я не просила делать за меня, я просила подсказать как можно реализовать
зачем тогда отвечать в теме, если не собираетесь этого делать?

Добавлено через 6 минут
rikimaru2013, спасибо
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
29.05.2015, 21:19
NAlt, я тебе подсказал. Целых четыре строки. Не заметила?
0
0 / 0 / 0
Регистрация: 02.10.2014
Сообщений: 136
29.05.2015, 21:30  [ТС]
castaway,если вы считаете, что я ничего не делаю, вы ошибаетесь
вот код который я писала
он работает с ошибкой
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
#include <stdio.h>
#include <windows.h>
HANDLE hThread1;
const int k=30;
int a[k], i, j;
 
DWORD WINAPI Thread2( void* pParams ){
int tmp=a[i];
a[i]=a[j];
a[j]=tmp;
return a[i];
Sleep(50);
}
DWORD WINAPI Thread1( void* pParams )
{
int const n=30;
    int a[n],h,t;
    for (h = n; h /= 2;) {
        for (i = h; i < n; i++) {
            t = a[i];
            for (j = i; j >= h && t < a[j - h]; j -= h) {
                a[j] = a[j - h];
            }
            a[j] = t;
        }
    }
    {
HANDLE hThread2=CreateThread(NULL,0,Thread2,NULL,0,NULL);WaitForSingleObject(hThread2,INFINITE);
CloseHandle(hThread2);
    }
    return 0;
}
int main()
{
    system("color F0");
 
for (i=0; i<k; i++) {a[i]=rand()%100; printf("%d ", a[i]); }; printf("\n");
    hThread1=CreateThread(NULL,0,Thread1,NULL,0,NULL);
WaitForSingleObject(hThread1,INFINITE);
for (i=0; i<k; i++) printf("%d ", a[i]);
printf("\n");
system("pause");
return 0;
}
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
29.05.2015, 21:39
NAlt, что мешало сразу его предоставить?
С какой ошибкой он работает?
0
0 / 0 / 0
Регистрация: 02.10.2014
Сообщений: 136
29.05.2015, 21:44  [ТС]
castaway, мешало то, что я только изучаю потоки, и я не уверена в том, что могла правильно что-либо сделать и мне нужен пример как это сделать, + тут нет разделения массива на две части, чтобы два потока сортировало, а потом сливалось вместе и выдавало результат
после сортировки выдает 30 в конце, хотя не должен этого делать
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
29.05.2015, 22:02
Цитата Сообщение от NAlt Посмотреть сообщение
после сортировки выдает 30 в конце, хотя не должен этого делать
Выдаёт одну цифру 30?
0
0 / 0 / 0
Регистрация: 02.10.2014
Сообщений: 136
29.05.2015, 22:04  [ТС]
castaway, выдает все цифры, но в конце 30
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
29.05.2015, 22:08
Цитата Сообщение от NAlt Посмотреть сообщение
но в конце 30
Я наверное что-то не понимаю.. А что должно быть заместо тридцати?
0
0 / 0 / 0
Регистрация: 02.10.2014
Сообщений: 136
29.05.2015, 22:11  [ТС]
castaway, ну как бы у вас есть числа
41, 67, 34, 0, 69, 24
результат
0, 24, 41, 67, 69, 30

запустила программу снова, перестало даже так сортировать
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
29.05.2015, 22:23
Ну хорошо. Если ты сможешь написать хотя бы рабочую сортировку Шелла (без потоков), тогда я постараюсь тебе помочь.
0
0 / 0 / 0
Регистрация: 02.10.2014
Сообщений: 136
29.05.2015, 22:44  [ТС]
castaway,

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 <stdio.h>
#include <iostream>
using namespace std;
void shell_sort (int *a, int n) {
    int h, i, j, t;
    for (h = n; h /= 2;) {
        for (i = h; i < n; i++) {
            t = a[i];
            for (j = i; j >= h && t < a[j - h]; j -= h) {
                a[j] = a[j - h];
            }
            a[j] = t;
        }
    }
}
 
int main (int ac, char **av) {
 
    int i;
    int a[10];
    for (i=0; i<10; i++) //ввод массива
    {
        cout<<i+1<<" Element "; cin>>a[i];
    }
    int n = sizeof a / sizeof a[0];
 
    for (i = 0; i < n; i++)
 
        printf("%d%s", a[i], i == n - 1 ? "\n" : " ");
    shell_sort(a, n);
    for (i = 0; i < n; i++)
        printf("%d%s", a[i], i == n - 1 ? "\n" : " ");
    return 0;
}
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
29.05.2015, 23:34
Можно так. Через OpenMP.
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
void InsertionSort( int * A, int N )
{
  int i, j, v;
  for (i = 1; i < N; i++) {
    v = A[i]; 
    j = i;
    while (A[j-1] > v) {
      A[j] = A[j-1]; 
      j--;
      if (j <= 0) break;
    }
    A[j] = v;
  }
}
 
void parallel_shellsort( int * A, int N )
{
  int k, h;
  h = 1; while (h < N) h = 3*h + 1;
  h /= 3;
#pragma omp parallel firstprivate(h)
 {
  while (h != 1) {
#pragma omp for
    for (k = 0; k < h; k++) {
      int i, j, v;
      for (i = k; i < N; i+=h) {
        v = A[i]; j = i;
        while (A[j-h] > v) {
            A[j] = A[j-h];
            j = j - h;
          if (j <= h) break;
        }
        A[j] = v;
      }
    }  // for k
    h /= 3;
  } //  end while 
 }  // end parallel region
    InsertionSort( A, N );
}
0
0 / 0 / 0
Регистрация: 02.10.2014
Сообщений: 136
29.05.2015, 23:38  [ТС]
castaway, спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.05.2015, 23:38
Помогаю со студенческими работами здесь

Сортировка Шелла. Написал программу, не могу понять, почему сортировка не выполняется
Программа создает динамический массив с рандомным заполнением. Дальше выбор сортировок, пузырьком или сортировка Шелла. Вот она то и не...

Сортировка Шелла и пирамидальная сортировка для символов
Здраствуйте, можете пожалуйста привести пример сортировок шелла и пиромидальной сортировки для символов, а то ничего не могу ...

Многопоточная быстрая сортировка (уменьшить время работы)
#include &quot;pch.h&quot; #include &lt;iostream&gt; #include&lt;stdio.h&gt; #include&lt;ctime&gt; #include&lt;vector&gt; #include&lt;thread&gt; #include&lt;chrono&gt; ...

Сортировка Шелла и сортировка вставками
Напишите программу для: 1)Сортировка вставкой 2)сортировка Шелла

Пирамидальная сортировка и сортировка Шелла
Ребята помогите пожалуйста, я NEWBIE и не могу решить такая задача : Выполнить сортировку по убыванию. Пирамидальная сортировка и...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru