![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 04.04.2011
Сообщений: 4
|
![]()
Ребят помогите откоментить ход решения задачи
int a[] = {10, 8, 5, 2, 3, 6, 7, 1, 4, 9}; typedef struct node { int i; int j; } NODE; void merge(int i, int j) { int mid = (i+j)/2; int ai = i; int bi = mid+1; int newa[j-i+1], newai = 0; while(ai <= mid && bi <= j) { if (a[ai] > a[bi]) newa[newai++] = a[bi++]; else newa[newai++] = a[ai++]; } while(ai <= mid) { newa[newai++] = a[ai++]; } while(bi <= j) { newa[newai++] = a[bi++]; } for (ai = 0; ai < (j-i+1) ; ai++) a[i+ai] = newa[ai]; } void * mergesort(void *a) { NODE *p = (NODE *)a; NODE n1, n2; int mid = (p->i+p->j)/2; pthread_t tid1, tid2; int ret; n1.i = p->i; n1.j = mid; n2.i = mid+1; n2.j = p->j; if (p->i >= p->j) return; ret = pthread_create(&tid1, NULL, mergesort, &n1); if (ret) { printf("%d %s - unable to create thread - ret - %d\n", __LINE__, __FUNCTION__, ret); exit(1); } ret = pthread_create(&tid2, NULL, mergesort, &n2); if (ret) { printf("%d %s - unable to create thread - ret - %d\n", __LINE__, __FUNCTION__, ret); exit(1); } pthread_join(tid1, NULL); pthread_join(tid2, NULL); merge(p->i, p->j); pthread_exit(NULL); } int main() { int i; NODE m; m.i = 0; m.j = 9; pthread_t tid; int ret; ret=pthread_create(&tid, NULL, mergesort, &m); if (ret) { printf("%d %s - unable to create thread - ret - %d\n", __LINE__, __FUNCTION__, ret); exit(1); } pthread_join(tid, NULL); for (i = 0; i < 10; i++) printf ("%d ", a[i]); printf ("\n"); // pthread_exit(NULL); return 0; |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сортировка слиянием C++ | PinkPink | Помощь студентам | 0 | 05.12.2011 20:07 |
сортировка слиянием (C++) | DarkAltair | Помощь студентам | 7 | 11.10.2011 21:12 |
СОРТИРОВКА СЛИЯНИЕМ | spawn969 | Помощь студентам | 5 | 12.05.2011 01:03 |
Сортировка слиянием | maxflint | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 5 | 05.12.2009 20:41 |