Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2014, 08:53   #1
Ostor
 
Регистрация: 02.11.2014
Сообщений: 5
По умолчанию Сортировка

Есть работающая сортировка пузырьковая, через потоки реализована, задача сейчас в том что бы вместо пузырьковой была сортировка Шелла, никак пока не получается ее оформить с потоками. Может у завалялось у кого)
Буду благодарен если поможете
Код:
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <iostream>
#include <time.h>
 
using namespace std;
 
 
HANDLE hThread1;
const int n = 10;
int a[n], i, j;
double duration;
DWORD WINAPI Thread2(void* pParams)//поток для обмена
{
    int tmp = a[i];
    a[i] = a[j];
    a[j] = tmp;
    Sleep(50);
    return 0;
}
 
DWORD WINAPI Thread1(void* pParams)//поток сортировки
{
    for (i = 0; i<n - 1; i++)
    for (j = i + 1; j<n; j++)
    if (a[i]>a[j])
    {
        HANDLE hThread2 = CreateThread(NULL, 0, Thread2, NULL, 0, NULL);//обмен в отдельном потоке
        WaitForSingleObject(hThread2, INFINITE);//окончание этого потока
        CloseHandle(hThread2);
    }
    return 0;
}
 
int main()
{
    for (i = 0; i<n; i++) { a[i] = rand() % 10; printf("%d ", a[i]); }; printf("\n");
    start = clock();
    hThread1 = CreateThread(NULL, 0, Thread1, NULL, 0, NULL);//запускаем сортировку
    WaitForSingleObject(hThread1, INFINITE);//ждём окончания
 
    for (i = 0; i<n; i++) printf("%d ", a[i]);
 
    std::cin.get();
}

Entore вне форума Сообщить модератору о нарушении 	Быстрый ответ на это сообщение
Ostor вне форума Ответить с цитированием
Старый 10.12.2014, 10:07   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А без потоков оформить смогешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.12.2014, 10:34   #3
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Както писал сортировку Шелла но не с потоками, а с простыми массивами. Если устроит то вот:

Код:
  case 1 :// Сортировка методом Шелла
  {
        int len = Col*Row;
	long d=len, i,j;
	int c;

	do
	{
		d=d/2;
		i=0;
		while ((j=i+d)<len)
		{
			if (array[i]>array[j])
			{
				c=array[i];
				array[i]=array[j];
				array[j]=c;
			};
			i++;
		};
	}
        // Сортировка пузырьком
	for (i=len;i>1;i--)
	{
		k=0;
		for (j=1;j<i;j++)
		if (array[j]<array[j-1])
		{
			c=array[j];
			array[j]=array[j-1];
			array[j-1]=c;
			k=1;
		};
		if (k==0) break;
	};
  break;
  }
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 10.12.2014 в 10:37.
Smitt&Wesson вне форума Ответить с цитированием
Старый 10.12.2014, 11:01   #4
Ostor
 
Регистрация: 02.11.2014
Сообщений: 5
По умолчанию

В том и проблема, без них я оформить могу но задание в том что бы сортировку в поток еще засунуть)
Ostor вне форума Ответить с цитированием
Старый 10.12.2014, 11:17   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Покажи как без потоков.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Быстрая сортировка(сортировка Хоара). Сортировка фрагмента массива [C++] druger Помощь студентам 0 20.04.2012 15:49
Сортировка Шелла и Шейкер-сортировка AleksandrMakarov Паскаль, Turbo Pascal, PascalABC.NET 11 11.03.2012 12:18
Сортировка массива методами предсортировки и слияния, и пирамидальная сортировка. lenny_24 Помощь студентам 2 17.04.2011 18:57
паскаль,одномерный массив,сортировка вставка,сортировка убывания,от максимального до конца немозг Помощь студентам 11 06.02.2010 21:57
Сортировка файлов в Explorer vs сортировка в Delphi mutabor Общие вопросы Delphi 11 04.09.2009 14:32