//by YewLi
#include<iostream>
#include<cstdlib>
#include<ctime>
#include<cstring>
using namespace std;
int main(){
int flag[105],ans[13],ans1[13];
memset(flag,0,sizeof(flag));
memset(ans1,0x7f,sizeof(ans1));
//for(int i = 1;i <= 10;i++)cout<<ans1[i];
srand(time(NULL));
for(int i = 1;i <= 10;i++){
int temp = rand()%101;
if(flag[temp])i--;
else{
flag[temp] = 1;
ans[i] = temp;
}
}
// for(int i = 1;i <= 10;i++)
// cout<<ans[i]<<" ";
// cout<<endl;
ans1[1] = ans[1];
for(int i = 2;i <= 10;i++){
bool fl = 1;
for(int j = 1;j < i;j++){
if(ans1[j] > ans[i]){
// cout<<ans[i]<<" "<<i<<" "<<j<<endl;
for(int k = i - 1;k >= j;k--)
ans1[k + 1] = ans1[k];
ans1[j] = ans[i];
fl = 0;
break;
}
}
if(fl) ans1[i] = ans[i];
}
for(int p = 1;p <= 10;p++)
cout<<ans1[p]<<" ";
cout<<endl;
int x,l = 1,r = 10,m = (l+r)/2;
bool findd = 0;
cin>>x;
while(l != m && r != m){
if(ans1[m] == x )
{findd = 1;break;}
if(ans1[l] == x )
{findd = 1;break;}
if(ans1[r] == x )
{findd = 1;break;}
if(ans1[m] > x)r = m,m = (l+r)/2;
else l = m,m = (l+r)/2;
}
if(findd)cout<<x<<" is in the array"<<endl;
else cout<<x<<" is not in the array"<<endl;
return 0;
}
插入排序与二分查找
拿随机数做的输入,然后用memset初始化的,这里可以不管,直接for循环初始化就行
自己写的插排可能不太好看,以后可以把老师的模板整理上来
啊,还是自己写的二分,我的二分贼难看,大概是以前吃过莫名其妙的亏对二分有阴影,老是写一些多余重复的边界条件求一个心理保险
我的二分不要看,以后背个老师的吧
(又在挖坑)