回 帖 发 新 帖 刷新版面

主题:快速排序算法中几条语句看不明白

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个回复)

沙发

lz能发一段比较完整的代码么、、

板凳


这段代码是《C程序设计语言》中的一个列子,代码就这么多,我也不知道完整的代码是怎么样的。。。

3 楼


哥们,我只是急切的想知道这个程序模块中的几个语句的意思, 别管其他的好不。。。拜托

4 楼

看书,问老师,问同学,这些都比在论坛上求助要快。
至少对于这类问题是这样的。
不要一上来就看代码。先想想快速排序到底是怎么回事。
你说的第5、7、9、10句,都是swap。这个函数用于交换。比如swap(v, left, last)意思就是把v[left]和v[last]的值进行交换。

5 楼

谢谢前辈,我在一个3流学校,大家都天天玩游戏的,没人学习,问老师学生有点不切实际,呵呵看书看不懂就来论坛上来了

6 楼

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);
}
谁帮我注释下啊。。特别是第五句,第七,九,十句。。。。

这个真的不知道怎么说呀...

我来回复

您尚未登录,请登录后再回复。点此登录或注册