不知道大家知道这个算法没有,就是靠睡觉完成排序的。
比如数字1 4 3,第一个数字1的时候,创建一个线程,然后让线程休眠1个时间单位,依次是 4 和 3个单位。
因为睡眠的时间不同,线程醒的时间也不同。3会比4先醒过来,这就完成了简单的排序。
如果在面试的时候,你想不起冒泡,想不起归并,也想不起快排,就偷偷懒,来一个睡觉也可以的排序算法试试。
不过这个算法的性能堪称史上最差,千万不要用在项目里面,被打的话,博主是不会负责医药费的哦。
我写的简单排序代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>#define MAX 10void *my_thread(void *arg){int tmp = *(int*)arg;usleep(tmp*1000);printf("%d ",tmp);
}int main()
{int a[MAX] = {1,2,5,6,2,8,0,3,10,4};int j = 0;pthread_t thid[MAX];for(j = 0;j<MAX;j++){printf("%d ",a[j]);}printf("\n");for(j = 0;j<MAX;j++){pthread_create(&thid[j],NULL,(void*)my_thread,&a[j]);}for(j = 0;j<MAX;j++){pthread_join(thid[j],NULL);}printf("\n");return 0;
}
代码输出:
最后,如果觉得不错,大家顺手点个赞,转发就是对我最大的鼓励和支持!
长按识别二维码关注公众号