以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 编程心得 』 (http://bbs.xml.org.cn/list.asp?boardid=42) ---- 为什么不能排序??? (http://bbs.xml.org.cn/dispbbs.asp?boardid=42&rootid=&id=60241) |
-- 作者:chenxiao0594 -- 发布时间:3/21/2008 1:21:00 PM -- 为什么不能排序??? #include<iostream.h> #include<stdlib.h> int swap(long &x,long &y) { long temp; temp=x; x=y; y=temp; return 0; } int partition(long v[],long left,long right) { long i=left,j=right+1; do{ do j--;while (v[j]>v[left]); do i++;while (v[i]<v[left]); if(i<j) swap(v[i],v[j]); }while(i<j); if(i<j) swap(v[left],v[j]); return j; } long qsort(long v[],long left,long right) { long q; if(left<right) { q=partition(v,left,right); qsort(v,left,q-1); qsort(v,q+1,right); } return 0; } void main() { const long N=10; long a[N]; for(int i=0;i<N;i++) a[i]=rand(); qsort(a,0,10); for(i=0;i<N;i++) { cout<<a[i]<<" "; } } |
-- 作者:iaiyanghua1 -- 发布时间:4/11/2008 9:27:00 PM -- qsort(a,i,10); 随便看了 下 ,应该改这 ,,你 再试了 ,,没时间 仔细看,有时间帮你调试下 |
-- 作者:Lear -- 发布时间:4/16/2008 9:43:00 PM --
do i++;while ( (i<n-1) &&(v[i]<v[left])); /防止超界 if(i<j) /删去,否则不能执行下面一句。上面执行完以后i>=j }
|
-- 作者:Lear -- 发布时间:4/16/2008 10:13:00 PM -- 不好意思,调试了一下,(swap(v[left],v[i]);/是v[i]而不是v[j] )我是错的 不好意思,是v[j] |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
46.875ms |