快速排序的代码有不明白的地方,标题长长长长长长长

Forthe2012 2014-03-04 07:40:19
这是快速排序中的分区函数代码。


其中这段不太明白,i<j 跟注释 -R[j]关键字小于X-有啥关系?还有代码提到指针,i是指针?j是指针?
...全文
66 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
你怎么了熊吉 2014-03-04
  • 打赏
  • 举报
回复
至于那个 if( i < j ),你注意上面的while有两个循环条件,因此while结束后,可能是因为不符合第一个条件结束的,也可能是不符合第二个条件结束的,这里if( i < j )就是判断是不是第一个条件导致while结束的
你怎么了熊吉 2014-03-04
  • 打赏
  • 举报
回复
引用 3 楼 Forthe2012 的回复:
[quote=引用 2 楼 czarten 的回复:] R[j]关键字小于X 注释的是上面那句= = 指针,这里的指针不是你想的那个指针,只是一种形象的说法,因为用i和j两个数字标记数组中的位置,就像两根指针一样
上面的那句是R[J]>=X啊。 还有,i,j是数组的下标吗?我觉得下标的话应该这样写啊(顺便那部分代码我觉得应该这样写) if(x<R[j]) { /*交换R[i]和R[j],交换后i指针加1*/ R[i]=R[j]; i++; }[/quote] while(R[j]>=x) 也就是,只要R[j]>=x,就一直循环 所以当while循环结束的时候,就是R[j]<x了
Forthe2012 2014-03-04
  • 打赏
  • 举报
回复
是R[J]<X
Forthe2012 2014-03-04
  • 打赏
  • 举报
回复
引用 2 楼 czarten 的回复:
R[j]关键字小于X 注释的是上面那句= = 指针,这里的指针不是你想的那个指针,只是一种形象的说法,因为用i和j两个数字标记数组中的位置,就像两根指针一样
上面的那句是R[J]>=X啊。 还有,i,j是数组的下标吗?我觉得下标的话应该这样写啊(顺便那部分代码我觉得应该这样写) if(x<R[j]) { /*交换R[i]和R[j],交换后i指针加1*/ R[i]=R[j]; i++; }
你怎么了熊吉 2014-03-04
  • 打赏
  • 举报
回复
R[j]关键字小于X 注释的是上面那句= = 指针,这里的指针不是你想的那个指针,只是一种形象的说法,因为用i和j两个数字标记数组中的位置,就像两根指针一样
Forthe2012 2014-03-04
  • 打赏
  • 举报
回复
请教各位CSDN高人。 也许问题太不起眼了...

69,379

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧