@ 2011.04.12 , 14:34
63

啊!Geek:算法的舞蹈

[-]
程序员最熟悉,而我最糊涂的一个玩意,algorithms /算法。你可能已经见过许多算法,还有用各种全新方式或模拟,或者展示的东东。但我保证你从来没有见过这样的算法

看看下面这个视频来自 Sapientia 大学,他们的学生使用中欧民族舞蹈,将一些算法的原理给我们跳了出来。让你在欣赏舞蹈的同时也学习到了知识。# oioi:不过我建议,首先你得真明白这些玩意。

算法(Algorithm)是指完成一个任务所需要的具体步骤和方法。也就是说给定初始状态或输入数据,能够得出所要求或期望的终止状态或输出数据。

以下是一个Bubble Sort/冒泡排序的舞蹈。# oioi:还请达人讲解一下。

# Bubble Sort/冒泡排序(wiki):它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。


给这篇稿打赏,让译者更有动力
支付宝打赏 [x]
您的大名: 打赏金额:

4.7
赞一个 (2)

TOTAL COMMENTS: 63+1

[2] 1 »
  1. 1402437

    type
    arr=array[1..maxn] of longint;
    procedure qs(var a:arr;l,r:longint);
    var
    i,j,x,y:longint;
    begin
    i:=l;
    j:=r;
    x:=a[random(r-l+1)+l];
    repeat
    while x>a[i] do inc(i);
    while x<a[j] do dec(j);
    if ij;
    if l<j then qs(l,j);
    if i<r then qs(i,r);
    end;
    30秒打完我会乱说?

  2. neorgx
    @6 years ago
    914081

    程序员撸过:就这10个数排序花了五分钟,这算法也太慢了

  3. 125阿斯达
    @6 years ago
    859658

    大连地区最好的大连品牌策划 www.kmasa.com.cn

  4. piccolo
    @6 years ago
    837751

    程序员的话。。。会觉得上面那排a[0], a[1], a[2],…a[9]更抢眼吧?

  5. 我的口语练习网
    @6 years ago
    825405

    英语口语培训-口语练习 www.english-cafe-china.net

  6. The Queen of 喵呜国
    @6 years ago
    765172

    初二不懂算法的童鞋表示很大鸭梨

  7. 花儿在楼道开
    @6 years ago
    758764

    不懂算法的人飘过………

  8. 758451

    还是期待一下Heap Sorting版本

  9. llrsnake
    @6 years ago
    758066

    经实践我知道楼上的程序为什么不全了。。。。原来被煎蛋机器人吃了- -b

  10. llrsnake
    @6 years ago
    758063

    int main(void)
    {
    char TestNum[10]={3,0,1,8,7,2,5,4,6,9}; //测试数据
    char i,j,temp;

    //站成一排开始跳舞
    for(i=9;i>0;i–) //总循环次数,就是从头到尾总共跳多少次
    {for(j=0;jTestNum[j+1]) //比大小.
    {temp=TestNum[j]; //出列,换位。
    TestNum[j]=TestNum[j+1];
    TestNum[j+1]=temp;
    }
    //原地跳
    }
    //转身,从头开始
    }
    return 0; //谢幕
    }

    上面是我自己编的,最基本的思路,有冗余。视频里的算法有优化。(不优化就算有人跳也没人看)

  11. llrsnake
    @6 years ago
    758060

    int main(void)
    {
    char TestNum[10]={3,0,1,8,7,2,5,4,6,9}; //测试数据
    char i,j,temp;

    //站成一排开始跳舞
    for(i=9;i>0;i–) //总循环次数,就是从头到尾总共跳多少次
    {for(j=0;ja[j+1]) //比大小.
    {temp=a[j]; //出列,换位。
    a[j]=a[j+1];
    a[j+1]=temp;
    }
    //原地跳
    }
    //转身,从头开始
    }
    return 0; //谢幕
    }

    上面是我自己编的,最基本的思路,有冗余。视频里的算法有优化。(不优化就算有人跳也没人看)

  12. llrsnake
    @6 years ago
    758042

    楼上两个程序好像有问题吧?还有难道没人发现8号背过去过早了么?8号不能和9号一起转身的呀,(是8号跳累了,还是我错了?)

  13. 757995

    @nasitehe: 其实才高中,以后要学生物……学过信息学竞赛……

[2] 1 »

发表评论


24H最赞