数组删除问题
有一个已经排好序的数组。要求输入一个数,在数组中查找是否有这个数,如果有,将该数从数组中删除,要求删除后的数组仍保持有序;如果没有,则输出“数组中没有这个数!
[解决办法]
折半查找,找到→利用循环将右边数组里数依次向左移一位
找不到→输出
[解决办法]
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]); //若找到,则在输出删除后的数组。
}