mirror of
https://hub.njuu.cf/TheAlgorithms/C-Plus-Plus.git
synced 2023-10-11 13:05:55 +08:00
sleep sort via c
This commit is contained in:
parent
8016377839
commit
515e70a579
41
sleep sort.c
Normal file
41
sleep sort.c
Normal file
@ -0,0 +1,41 @@
|
||||
#include <stdio.h>
|
||||
#include <windows.h>
|
||||
#include <process.h>
|
||||
|
||||
void routine(void *a)
|
||||
{
|
||||
int n = *(int *) a; // typecasting from void to int
|
||||
|
||||
// Sleeping time is proportional to the number
|
||||
// More precisely this thread sleep for 'n' milliseconds
|
||||
Sleep(n);
|
||||
|
||||
// After the sleep, print the number
|
||||
printf("%d ", n);
|
||||
|
||||
void sleepSort(int arr[], int n)
|
||||
{
|
||||
// An array of threads, one for each of the elements
|
||||
// in the input array
|
||||
HANDLE threads[n];
|
||||
|
||||
// Create the threads for each of the input array elements
|
||||
for (int i = 0; i < n; i++)
|
||||
threads[i] = (HANDLE)_beginthread(&routine, 0, &arr[i]);
|
||||
|
||||
// Process these threads
|
||||
WaitForMultipleObjects(n, threads, TRUE, INFINITE);
|
||||
return;
|
||||
}
|
||||
|
||||
// Driver program to test above functions
|
||||
int main()
|
||||
{
|
||||
// Doesn't work for negative numbers
|
||||
int arr[] = {34, 23, 122, 9};
|
||||
int n = sizeof(arr) / sizeof(arr[0]);
|
||||
|
||||
sleepSort (arr, n);
|
||||
|
||||
return(0);
|
||||
}
|
Loading…
Reference in New Issue
Block a user