C语言快速的排序函数看不懂了

werrwe 2013-11-12 09:52:25
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;

上面这段程序有几个疑问想请教下,问题1:上面的qsort函数是不是对数组下标进行排序?
问题2:swap(int v[],int i,int j)这句意思是不是将数组v和整型i,j交换位置?如果是为什么要写这样一句啊?如果不是那是什么意思呢?
问题3: if(left>=right) return;这句为什么解释为“若数组包含的元素少于两个”?我觉得如果数组下标是3,1,2,0,那左侧大于右侧,实际数组元素为什么不是4个?
...全文
180 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
独孤的根号3 2013-11-13
  • 打赏
  • 举报
回复
快排的原理先看看吧,光看代码有多大用啊
baichi4141 2013-11-13
  • 打赏
  • 举报
回复
问题2:swap(int v[],int i,int j)这句意思是不是将数组v和整型i,j交换位置?如果是为什么要写这样一句啊?如果不是那是什么意思呢? 答:这条语句的意思是将数组v的第i个和第j个变量交换位置。如果你连这句话都看不懂,那我建议你不要研究什么算法了,先把基础知识掌握好。
booksoon 2013-11-13
  • 打赏
  • 举报
回复
快排,简单写就一递归而已。
max_min_ 2013-11-13
  • 打赏
  • 举报
回复
先把你传进来的函数每个参数的意思理解清楚吧, 网上再看看快排序的理论知识,自己画画!
Adol1111 2013-11-13
  • 打赏
  • 举报
回复
你应该先看懂快排是什么意思,然后再来看代码的部分。我觉得你连快排的原理还没搞懂。
werrwe 2013-11-13
  • 打赏
  • 举报
回复
引用 2 楼 caozhy 的回复:
这根本就不是一个合法的程序,连括号都不匹配。一个错误的程序不值得讨论。
程序没错误,就是不完整
werrwe 2013-11-13
  • 打赏
  • 举报
回复
引用 3 楼 junlinfushi 的回复:
话说,你理解一下快速排序算法,自己都可以写出来了。快速排序不难的
这是我在网上找的,不是我写的
junlinfushi 2013-11-12
  • 打赏
  • 举报
回复
话说,你理解一下快速排序算法,自己都可以写出来了。快速排序不难的
threenewbee 2013-11-12
  • 打赏
  • 举报
回复
这根本就不是一个合法的程序,连括号都不匹配。一个错误的程序不值得讨论。
q598162221 2013-11-12
  • 打赏
  • 举报
回复
话说我也看不懂

70,037

社区成员

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

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