今日在微博看到如此奇妙的代码。竟然还有新的sort算法,对于我这样的渣渣必须研究一下,代码例如以下:

#!/bin.bash
function f()
{
sleep "$1" //sleep 这么多s
echo "$1"
} while [ -n "$1" ] //第一个參数不为空
do
f "$1" & //后台执行,相当于fork一个进程去执行f, 父进程同一时候继续下去
shift //输入參数左移。也即覆盖掉第一个參数
done wait//父进程等待子进程都结束了再继续往下,否则子进程成为孤立进程

SleepSort。一看代码,看到sleep大致就明确意图了,利用sleep,以及多线程并发。依照sleep大小排序,并发来print排序





这个算法本质上是并发的算法,运用了sleep函数,同一时候几个进程并发,并发是指几个进程同一时间段同一时候运行,一个时刻还是要排个序逐个运行的,而并行是须要硬件支持的,真正的同一时刻多个进程同一时候运行。





于是乎本菜鸟打算C语言搞一搞,由于借助linux的fork函数来模拟 shell里面 &的后台执行功能。另外上述代码接口不太好,最好是传递数组參数这样的的,于是我写个接口比較general的C版

另外这里面要注意就是shell wait等前面子进程所有结束,父进程才继续。我用C总是输出第一个数父进程就返回了,差了C的文档才知道,他是随意一个child返回父进程就返回了。因此多次wait 用个loop。





代码(*nix OS only):

#include <iostream>
#include <sys/wait.h>
using namespace std; void f(int x)
{
sleep(x);
cout<<x<<" ";
}
void SleepSort(int*a, int n)
{
int status;
pid_t pid;
for(int i=0;i<n;i++)
{
pid=fork();
if(pid==0)//child process, return 0 pid
{
f(a[i]);
return;
}
else//father process return pid>0
{
;
}
}
for(int i=0;i<n;i++)
wait(NULL);//each wait one child process, then continue
}
int main()
{
int a[]={6,2,5,8,5,4,7,1};
SleepSort(a,8);
}

依照这个思想。事实上不论什么并行的技术理论都能够实现sleepsort,比如CUDA,openmp, mpi等等,我这里弄个并发版本号。

另外确实要用最小单位s的sleep函数。略微注意一下就好了~~~ 以下博客说的比較清楚~~~

http://blog.csdn.net/changingivan/article/details/6966510

收到这个启示,这个算法有个缺陷。假设排序的树interval非常小,比如1.1 1.11这样的,也可能有危急。最小sleep差比一次loop时间长是关键

今天一个马来人说非常崇拜中国的gymnastics,我第一反应geometry, 后来才知道体操。。另外一个阿三教了我一点rude english,之前一直问我what's up?这个是非常标准的美式口语.......今天竟然说了I need a chick, 我已開始以为是trick,可是也说不通。他说,假设说一个女生是chick是非常粗鲁的,还有barbanic 也是粗鲁的意思。

Good night, bitch! Get your life 享受生活,别那么书呆。Working hard,no,  hardly working.

微博预计要火一阵的SleepSort之Shell及C实现的更多相关文章

  1. 去中心化类微博应用 mastodon

    一句话重点,去中心,没监管,自己对自己信息做主,没人随便删你消息的分布式社交应用 mastodon. 建了一个实例, https://cncs.io 来专门讨论计算机相关信息,欢迎大家注册来玩.已有用 ...

  2. 马云18年前制止偷井盖视频走红 2013-05-10 11:00:37 来源: 新快报(广州) 有0人参与 分享到 网易微博 新浪微博 腾讯空间 人人网 有道云笔记 在一次访谈中,即将卸任阿里巴巴CEO的马云自曝了他第一次上电视是在1995年。“我刚开始创

    马云18年前制止偷井盖视频走红 2013-05-10 11:00:37 来源: 新快报(广州) 有0人参与   分享到 网易微博 新浪微博 腾讯空间 人人网 有道云笔记 在一次访谈中,即将卸任阿里巴巴 ...

  3. Java程序员秋招面经大合集(BAT美团网易小米华为中兴等)

    Cvte提前批 阿里内推 便利蜂内推 小米内推 金山wps内推 多益网络 拼多多学霸批 搜狗校招 涂鸦移动 中国电信it研发中心 中兴 华为 苏宁内推 美团内推 百度 腾讯 招商银行信用卡 招银网络科 ...

  4. 一个JAVA渣渣的校招成长记,附BAT美团网易等20家面经总结

    欢迎关注我的微信公众号:"Java面试通关手册"(坚持原创,分享美文,分享各种Java学习资源,面试题,以及企业级Java实战项目回复关键字免费领取): 今天分享一篇牛客网上的一个 ...

  5. 创造tips的秘籍——PHP回调后门

    作者:Phithon 原文连接:https://www.leavesongs.com/PENETRATION/php-callback-backdoor.html 最近很多人分享一些过狗过盾的一句话, ...

  6. 96、facebook Fresco框架库源使用基础

    开源项目链接 facebook Fresco仓库:git clone https://github.com/facebook/fresco facebook Fresco主页:“>http:// ...

  7. 齐B小短裙

    女模周蕊微博引关注 火了齐B小短裙毁了干爹[图]_网易新闻中心 齐B小短裙

  8. 96、facebook Fresco框架库源使用(转载)

    各个属性详情:http://blog.csdn.net/y1scp/article/details/49245535 开源项目链接 facebook Fresco仓库:git clone https: ...

  9. AI创投的冰与火之歌:泡沫、跟风、短板和有钱花不出去的沮丧【转】

    转自:http://36kr.com/p/5071386.html 国内的AI行业仍处于野蛮生长阶段.热钱不少,优质项目却不多.创业者拿钱难,投资者有钱却花不出去. 编者按:本文来自微信公众号“刺猬公 ...

随机推荐

  1. 网络简要<入门篇>对应配置代码

    交换机的配置 (1)交换机的模式: switch>    用户模式,可以查看设备的部分内容 SW-3ceng>enable SW-3ceng#          进入特权模式,可以查看更多 ...

  2. RabbitMQ 官方NET教程(一)【介绍】

    本教程假定RabbitMQ已在标准端口(5672)上的localhost上安装并运行.如果使用不同的主机,端口或凭据,连接设置将需要调整. RabbitMQ是一个消息代理:它接受并转发消息. 您可以将 ...

  3. 前端-Vue结构思维导图笔记

    看不清的朋友右键保存或者新窗口打开哦!喜欢我可以关注我,还有更多前端思维导图笔记有vue结构分析,JS基础,JQ,JS高级,Angular,git等等

  4. intellij 创建java web项目(maven管理的SSH)

    intellij 创建java web项目(maven管理的SSH) 环境intellij IDEA14.MAVEN.Spring.Struts2.Hibernate.Java Web.工程搭建. 1 ...

  5. 去除DialogFragment的背景阴影,背景色,标题栏

    style中: <resources xmlns:android="http://schemas.android.com/apk/res/android"> <s ...

  6. 【PostgreSQL-9.6.3】psql常用命令

    命令 描述 \l 查看数据库 \c 换库 \d 查看所有表 \dt 只显示匹配的表 \di 只显示匹配的索引 \ds 只显示匹配的序列 \dv 只显示匹配的视图 \df 只显示匹配的函数 \d t1 ...

  7. mongoose 操作 mongodb 笔记 (自己的笔记,自己看的)

    mongodb下载/安装 mongoose   npm install --save mongoose mongoose 数据库连接 const mongoose = require('mongoos ...

  8. POJ 3041 - 最大二分匹配

    这道题实现起来还是比较简单的,但是理解起来可能有点困难. 我最开始想到的是贪心法,每次消灭当前小行星最多的一行或一列.然而WA了.Discuss区里已经有高人给出反例. 下面给出正确的解法 我们把行和 ...

  9. php xss 函数

    function xss($string) { if (is_array($string)||is_object($string)||is_resource($string)) { return '' ...

  10. 【sqli-labs】 less26a GET- Blind based -All you SPACES and COMMENTS belong to us -String-single quotes-Parenthesis(GET型基于盲注的去除了空格和注释的单引号括号注入)

    这个和less26差不多,空格还是用%a0代替,26过了这个也就简单了 ;%00 可以代替注释,尝试一下 order by 3 http://192.168.136.128/sqli-labs-mas ...