| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1520 人关注过本帖
标题:求指导算法~斑竹和朋友一起思考一下吧!
只看楼主 加入收藏
dengyiming
Rank: 1
等 级:新手上路
帖 子:101
专家分:0
注 册:2004-12-17
收藏
得分:0 
很难理解啊~
2006-11-05 20:02
dengyiming
Rank: 1
等 级:新手上路
帖 子:101
专家分:0
注 册:2004-12-17
收藏
得分:0 
int[] id=new int[]{5,6,7,8,9,11,12,14,0,1,2,3,4};
for(int i=0,k=1;k==1;i++){
int z=1;
for(int j=0;j<id.length&&z==1;j++)
if(i==id[j]) {
k=1;
z=0;
}
else {
if(j==id.length-1){
k=0;
z=0;
System.out.println("缺少的值:"+i);
}
}

我的算法是这样的啊,但是找不到其他缺少的数了,只能找到一个缺少了又是数列中最小的数 13
2006-11-05 20:15
云中雾
Rank: 1
等 级:新手上路
威 望:1
帖 子:168
专家分:3
注 册:2005-12-30
收藏
得分:0 
看不懂?不会吧?用数组里的每个值依次与i值进行比较,相等,则差为0,不等则差大于0,差为几,就是缺少几个数,然后依次把数输出就可以了,输出完之后,再把i加1,然后接着比较。

public class chazhao{
public static void main(String[] args){
int[] a=new int[]{5,6,7,8,9,11,12,14,0,1,2,3,4};
for(int t=0;t<a.length;t++){
for(int p=0;p<a.length-1;p++){
if(a[p]>a[p+1]){
int temp=a[p];
a[p]=a[p+1];
a[p+1]=temp;
}
}
}
int i=0,j;
for(j=0; j<a.length&i<=14;j++) {
int s=a[j]-i;
if(s==0)
i++;
else if(s>0){
for(int k=0;k<s;k++){
System.out.print(+i+"\t");
i++;
}
i++;
s=0;
}
}
}
}
输出结果:10 13

这用你的那个数组编写的一个程序,你的数组里缺少两个数,10和13,不是一个,还有你的算法我看不懂。

白色的忧郁让我白色的思念从洁白到苍白,从苍白到空白,比空白更空白,变成深白的坦白!
2006-11-06 13:11
siruyi
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2006-10-15
收藏
得分:0 

public class ChaCha
{
static void bubble(int i,int j,int[] data)
{ int sum=(data[j]-j)-(data[i]-i);

if(j-i==0)
{
if(j+1<data.length)
{
int k =data[i+1]-data[i];
if(k!=1)
{
for (int p = 1;p<k ;p++ )
{
System.out.println(data[i]+p);
}//for
}//if
}//if
}//if


else if (j-i==1)
{
int k = data[j]-data[i];
if (k!=1)
{
for (int p = 1;p<k ;p++ )
{
System.out.println(data[i]+p);
}//for
}//if
if(j+1<data.length)
{
k = data[j+1]-data[j];
if(k!=1)
{
for (int p = 1;p<k ;p++ )
{
System.out.println(data[j]+p);
}
}
}
}//else if

else
{ //if((data[(i+j)/2]-(i+j)/2)-(data[i]-i)!=0)
bubble(i,(i+j)/2,data);
//if((data[((i+j)/2+1)-((i+j)/2)+1])-(data[j]-j)!=0)
bubble((i+j)/2+1,j,data);
}//else




}//bubble
public static void main(String[] args)
{
int[] a = {1,2,3,5,7,8,9,10,12,15,17,18,23,24,26,27,30} ;
bubble(0,a.length-1,a);
}
}

上面红色两行是用来减少查找次数的,但是由于能力有限,只能提出思想,希望高手指教
如果没有次序的只能先排序了哦,快速排序法应该最好,不过如果用堆排序可以在排序过程中
就把没有的元素找出来,


2006-11-06 14:05
dengyiming
Rank: 1
等 级:新手上路
帖 子:101
专家分:0
注 册:2004-12-17
收藏
得分:0 
我贴的代码多加一个FOR循环就可以找出缺少的数字了,可惜效率不太好,哈哈。
努力思考才是王道

[此贴子已经被作者于2006-11-8 17:21:45编辑过]

2006-11-08 17:21
快速回复:求指导算法~斑竹和朋友一起思考一下吧!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032548 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved