主题:快速排序算法中几条语句看不明白
june1c
[专家分:0] 发布于 2011-03-06 21:49:00
void qsort(int v[],int left,int right)
{
int i,last;
void swap(int v[],int i,int j);
if(left>=right)
return;
swap(v,left,(left + right)/2);
last=left;
for(i=left+1;i<=right;i++)
if(v[i]>v[left])
swap(v,++last,i)
swap(v,left,last);
qsort(v,left,last-1);
qsort(v,last+1,right);
}
谁帮我注释下啊。。特别是第五句,第七,九,十句。。。。
回复列表 (共6个回复)
沙发
fragileeye [专家分:1990] 发布于 2011-03-06 23:06:00
lz能发一段比较完整的代码么、、
板凳
june1c [专家分:0] 发布于 2011-03-07 16:29:00
这段代码是《C程序设计语言》中的一个列子,代码就这么多,我也不知道完整的代码是怎么样的。。。
3 楼
june1c [专家分:0] 发布于 2011-03-07 16:33:00
哥们,我只是急切的想知道这个程序模块中的几个语句的意思, 别管其他的好不。。。拜托
4 楼
eastcowboy [专家分:25370] 发布于 2011-03-07 21:53:00
看书,问老师,问同学,这些都比在论坛上求助要快。
至少对于这类问题是这样的。
不要一上来就看代码。先想想快速排序到底是怎么回事。
你说的第5、7、9、10句,都是swap。这个函数用于交换。比如swap(v, left, last)意思就是把v[left]和v[last]的值进行交换。
5 楼
june1c [专家分:0] 发布于 2011-03-08 14:34:00
谢谢前辈,我在一个3流学校,大家都天天玩游戏的,没人学习,问老师学生有点不切实际,呵呵看书看不懂就来论坛上来了
6 楼
JimmyMac [专家分:0] 发布于 2011-03-12 00:46:00
void qsort(int v[],int left,int right)
{
int i,last;
void swap(int v[],int i,int j);
if(left>=right)//如果左边大于右边..
return;
swap(v,left,(left + right)/2);//
last=left;
for(i=left+1;i<=right;i++)//
if(v[i]>v[left])//如果
swap(v,++last,i)//这漏了分号了吧
swap(v,left,last);
qsort(v,left,last-1);
qsort(v,last+1,right);
}
谁帮我注释下啊。。特别是第五句,第七,九,十句。。。。
这个真的不知道怎么说呀...
我来回复