首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

走过路过的看看吧!解决思路

2012-03-01 
走过路过的看看吧!在TC中运行了!为什么只对第一个数进行查找!错了!帮改改改吧!先谢了!#includestdlib.h#

走过路过的看看吧!
在TC中运行了!为什么只对第一个数进行查找!错了!帮改改改吧!先谢了!
#include   <stdlib.h>
#include   <stdio.h>
#include   <time.h>
int   Seq_search(int   a[],   int   k,   int   max)
{
int   mid=0;
int   low=1;
int   high=max;

while(low <=high)
{
mid=(low+high)/2;
if(a[mid]==k)
{
return   mid;
}

else   if(k <a[mid])
{
high=mid-1;
}

else
{
low=high+1;
}
}
return   0;
}

int   main(void)
{
int   a[100];
int   p,k,max;
int   i,   j,   temp;
p   =   0;
printf( "MAX: ");
scanf( "%d ",&max);
srand((unsigned)time(NULL));
/*   产生max个随机数   */
for(i=1;   i <=max;   i++)
{
a[i]   =   rand();
printf( "%-10d ",a[i]);
}
printf   ( "\n ");
/*对这max个随机数进行排序   */
for   (i=1;   i <=max;   i++)
{
for   (j=2;   j <=max;   j++)
{
if   (a[i]   >   a[j])
{
temp   =   a[i];
a[i]   =   a[j];
a[j]   =   temp;
}
}
}
/*   从小到大的顺序排列   */
for   (i=1;   i <=max;   i++)
{
printf   ( "%-10d ",   a[i]);
}

printf   ( "\n ");

printf( "\nK: ");
scanf( "%d ",&k);
p=Seq_search(a,   k,   max);
if(p)
{
printf( "Find!   The   Locatin   is:%x,It 's   data   is   %d\n ",p,k);
}
else
{
printf( "Sorry,can 't   find!\n ");
}

return   0;
}


[解决办法]
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int Seq_search(int a[], int k, int max)
{
int mid=0;
int low=1;
int high=max;

while(low <=high)
{
mid=(low+high)/2;
if(a[mid]==k)
{
return mid;
}

else if(k <a[mid])
{
high=mid-1;
Seq_search(a,k,high);////////??????
}

else
{
low=mid+1;////???
Seq_search(a+low-1,k,high-mid);///////???
}
}
return 0;
}

int main(void)
{
int a[100];
int p,k,max;
int i, j, temp;
p = 0;
printf( "MAX: ");
scanf( "%d ",&max);
srand((unsigned)time(NULL));
/* 产生max个随机数 */
for(i=1; i <=max; i++)
{
a[i] = rand();
printf( "%-10d ",a[i]);
}
printf ( "\n ");
/*对这max个随机数进行排序 */
for (i=1; i <=max; i++)
{
for (j=i+1; j <=max; j++)/////????????
{
if (a[i] > a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
/* 从小到大的顺序排列 */
for (i=1; i <=max; i++)
{
printf ( "%-10d ", a[i]);
}

printf ( "\n ");

printf( "\nK: ");
scanf( "%d ",&k);
p=Seq_search(a, k, max);
if(p)
{
printf( "Find! The Locatin is:%x,It 's data is %d\n ",p,k);
}
else
{
printf( "Sorry,can 't find!\n ");
}



return 0;
}

[解决办法]
排序排错了!

贴个全的吧!

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int Seq_search(int a[], int k, int max)
{
int mid=0;
int low=1;
int high=max;

while(low <=high)
{
mid=(low+high)/2;
if(a[mid]==k)
{
return mid;
}

else if(k <a[mid])
{
high=mid;
}

else
{
low=mid+1;
}
}
return 0;
}

int main(void)
{
int a[100];
int p,k,max;
int i, j, temp;
p = 0;
printf( "MAX: ");
scanf( "%d ",&max);
srand((unsigned)time(NULL));
/* 产生max个随机数 */
for(i=1; i <=max; i++)
{
a[i] = rand();
printf( "%-10d ",a[i]);
}
printf ( "\n ");
/*对这max个随机数进行排序 */
for (i=1; i <=max; i++)
{
for (j=i+1; j <=max; j++)
{
if (a[i] > a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
/* 从小到大的顺序排列 */
for (i=1; i <=max; i++)
{
printf ( "%-10d ", a[i]);
}

printf ( "\n ");

printf( "\nK: ");
scanf( "%d ",&k);
p=Seq_search(a, k, max);
if(p)
{
printf( "Find! The Locatin is:%x,It 's data is %d\n ",p,k);
}
else
{
printf( "Sorry,can 't find!\n ");
}
system( "pause ");
return 0;
}

[解决办法]
哥们实在不好意思
我大意了

这次应该没问题了

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int Seq_search(int a[], int k, int max)
{
int mid=0;
int low=1;
int high=max;

while(low <=high)
{
mid=(low+high)/2;
if(a[mid]==k)
{
return 1;
}

else if(k <a[mid])
{
high=mid-1;
}

else
{
low=mid+1;
}
}
return 0;
}

int main(void)
{
int a[100];
int p,k,max;
int i, j, temp;

p = 0;

printf( "MAX: ");
scanf( "%d ",&max);


srand((unsigned)time(NULL));

/* 产生max个随机数 */
for(i=1; i <=max; i++)
{
a[i] = rand();
printf( "%-10d ",a[i]);

}

printf ( "\n ");

/*对这max个随机数进行排序 */
for (i=1; i <=max; i++)
{
for (j=i; j <=max; j++)
{
if (a[i] > a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}

/* 从小到大的顺序排列 */
for (i=1; i <=max; i++)
{
printf ( "%-10d ", a[i]);
}

printf ( "\n ");

printf( "\nK: ");
scanf( "%d ",&k);

p=Seq_search(a, k, max);

if(p==1)
{
printf( "Find! The Locatin is:%x,It 's data is %d\n ",p,k);
}

else
{
printf( "Sorry,can 't find!\n ");
}

return 0;
}

热点排行