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

数组删除有关问题

2012-03-01 
数组删除问题有一个已经排好序的数组。要求输入一个数,在数组中查找是否有这个数,如果有,将该数从数组中删

数组删除问题
有一个已经排好序的数组。要求输入一个数,在数组中查找是否有这个数,如果有,将该数从数组中删除,要求删除后的数组仍保持有序;如果没有,则输出“数组中没有这个数!

[解决办法]
折半查找,找到→利用循环将右边数组里数依次向左移一位
找不到→输出


[解决办法]
template <class Type>

int BinarySearch(Type a[],const Type& x,int n)

{

int left=0;

int right=n-1;

while(left <=right){

int middle=(left+right)/2;

if (x==a[middle]) return middle;

if (x> a[middle]) left=middle+1;

else right=middle-1;

}

return -1;

}

你再改改呀!
[解决办法]
这是查找方面的问题,有很多解决的方案,觉得效率较高的就是折半查找了。
main()
{
int a[10]={1,2,3,4,5,6,7,8,9,12};//随便定义的
int low,high,mid,n,token=0;
printf( "input the number you want found: ");
scanf( "%d ",&n);
low=0;
high=9;
while(low <=high&&token==0) //token作为差找到的标识符,若找到,则为1。
{
mid=(low+high)/2;
if(a[mid]==n)
{
for(;mid <9-1;mid++)
a[mid]=a[mid+1];
token=1;
}
else if(a[mid]> n)
high=mid-1;
else
low=mid+1;
}
if(token==0)
printf( "\n数组中没有这个数! ");
else
for(mid=0;mid <9-1;mid++)
printf( "%d ",a[mid]); //若找到,则在输出删除后的数组。
}

热点排行