9.折半查找指定元素
题目问题描述:
- 利用折半查找寻找x;
- 找到x则与后继元素交换位置
- 未找到则插入,保持递增有序
结果截图:
实现代码:
//折半查找指定元素(找到换位,未找到插入)
#include<stdio.h>
int main(){
int a[100];
int low = 0;
int high,mid,x;
char ch;
int len = 0;
int temp = 0;
printf("输入顺序表:\n");
while(scanf("%d%c",&a[len++],&ch) == 2 && ch !='\n');
printf("查询x的值: ");
scanf("%d",&x);
high = len;
while(low <= high){
mid = (low + high)/2;
if(mid < x)
low = mid+1;
else if(mid > x)
high = mid-1;
else
break;
// printf("mid=%d ",mid);
}
// printf("\n%d(%d)\n",mid,a[mid]);
if(a[mid-1] == x){
temp = a[mid];
a[mid] = a[mid-1];
a[mid-1] = temp;
for(int i = 0;i < len;i++){
printf("%d ",a[i]);
}
}
else{
for(int j = len-1;j >= mid-1;j--){
a[j+1] = a[j];
}
a[mid-1] = x;
for(int i = 0;i < len+1;i++){
printf("%d ",a[i]);
}
}
printf("\n");
}