神级排序算法:sleep sort

本文介绍了一种奇特的排序方法——睡眠排序,并提供了 shell 脚本及 C 语言实现示例。该方法通过多线程和睡眠指令达到排序效果,最终按顺序输出整数序列。

下面是一个排序算法,用shell实现的:

#!/bin/bash #sleepsort.sh function f() { sleep "$1" echo "$1" } while [ -n "$1" ] do f "$1" & shift done wait

用法:

./sleepsort.sh 5 3 6 3 6 3 1 4 7

这个算法太NB、太BT、太搞笑了!

神马冒泡、插入、归并... 全是浮云啊!

膜拜吧!

详情可见酷壳原文:http://coolshell.cn/articles/4883.html

佩服之余,我在linux下用C语言实现了一把:

//sleepsort.c #include <stdio.h> #include <unistd.h> #include <pthread.h> void *f(void *opt) { sleep((*((int *)opt))); printf("%d,",(*((int *)opt))); pthread_exit(0); } int main() { const int len=5; pthread_t a_thread[5]; int array[5]={3,5,2,4,1}; int i=0; while(i<len) { pthread_create(&(a_thread[i]),NULL,f,&(array[i])); i++; } i=0; while(i<len) { pthread_join(a_thread[i],0); i++; } printf("/n"); return 0; }

编译:

gcc -Wall -o sleepsort sleepsort.c -lpthread

执行:

./sleepsort

结果:

1,2,3,4,5,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值