Geek
oioi @ 2011.04.12 , 14:34
63
啊!Geek:算法的舞蹈
[-]
程序员最熟悉,而我最糊涂的一个玩意,algorithms /算法。你可能已经见过许多算法,还有用各种全新方式或模拟,或者展示的东东。但我保证你从来没有见过这样的算法。
看看下面这个视频来自 Sapientia 大学,他们的学生使用中欧民族舞蹈,将一些算法的原理给我们跳了出来。让你在欣赏舞蹈的同时也学习到了知识。# oioi:不过我建议,首先你得真明白这些玩意。
算法(Algorithm)是指完成一个任务所需要的具体步骤和方法。也就是说给定初始状态或输入数据,能够得出所要求或期望的终止状态或输出数据。
以下是一个Bubble Sort/冒泡排序的舞蹈。# oioi:还请达人讲解一下。
# Bubble Sort/冒泡排序(wiki):它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。
给这篇稿打赏,让译者更有动力
支付宝打赏 [x]
@6 years ago
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秒打完我会乱说?
@7 years ago
程序员撸过:就这10个数排序花了五分钟,这算法也太慢了
@7 years ago
大连地区最好的大连品牌策划 www.kmasa.com.cn
@7 years ago
程序员的话。。。会觉得上面那排a[0], a[1], a[2],…a[9]更抢眼吧?
@7 years ago
英语口语培训-口语练习 www.english-cafe-china.net
@7 years ago
初二不懂算法的童鞋表示很大鸭梨
@7 years ago
不懂算法的人飘过………
@7 years ago
还是期待一下Heap Sorting版本
@7 years ago
经实践我知道楼上的程序为什么不全了。。。。原来被煎蛋机器人吃了- -b
@7 years ago
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; //谢幕
}
上面是我自己编的,最基本的思路,有冗余。视频里的算法有优化。(不优化就算有人跳也没人看)
@7 years ago
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; //谢幕
}
上面是我自己编的,最基本的思路,有冗余。视频里的算法有优化。(不优化就算有人跳也没人看)
@7 years ago
楼上两个程序好像有问题吧?还有难道没人发现8号背过去过早了么?8号不能和9号一起转身的呀,(是8号跳累了,还是我错了?)
@7 years ago
@nasitehe: 其实才高中,以后要学生物……学过信息学竞赛……