专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » 快速排序程序:从一个快速排序程序而想到的 »正文

快速排序程序:从一个快速排序程序而想到的

来源: 发布时间:星期五, 2008年9月26日 浏览:461次 评论:0

打算写一个快速排序的程序,想从网上找一些代码。

先找了一个c#的,改成vc的后,却发现经常导致非法操作,也没自己看源码,又去找了一个vc的代码。

看了看,好像和之前c#的没有大的区别,但是非法操作的情况依旧。

又从网上搜了一些源代码,仔细看了看。 发现这些代码出奇的相似,都忽略了在获取中点时的一个判断。

原来代码如下:

intpation(intdata[],intx,inty)
{
intn=data[x],i=x+1,j=y,temp;
while(1)
{
while(data[i]<n)++i;
while(data[j]>n)--j;
if(i>=j)break;
temp=data[i];data[i]=data[j];data[j]=temp;
}
data[x]=data[j];
data[j]=n;
returnj;
}

修改后为:

intpation(intdata[],intx,inty)
{
intn=data[x],i=x+1,j=y,temp;
while(1)
{
while(data[i]<n && i < y)++i;
while(data[j]>n && j > x)--j;
if(i>=j)break;
temp=data[i];data[i]=data[j];data[j]=temp;
}
data[x]=data[j];
data[j]=n;
returnj;
}

如果没有j > x或者i < y,就有可能出现i超出数组上界或者j小于0的情况,从而导致非法操作。

可见,网络上的资源固然丰富,但还是需要善用。

如果本文没有解决您的问题,请进老妖怪开发者社区提问

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: