一、问题描述:
初始化int类型数组data1[]={1,3,5,7,9,11,13,15,17,19,2,4,6,8,10,12,14,16,18,20},先用任一种算法对其进行排序,然后用户输入一个数字,折半查找函数模板找出他的位置。
二、解题思路:
首先对数组进行排序,然后用数组的下标进行折半查找,利用数组下标的比较大小进行替换,知道找到该数字的位置,最后输出该数字的位置。
三、代码实现:
1 #include<iostream> 2 #include<string> 3 #include<vector> 4 #include<algorithm> 5 using namespace std; 6 int main() 7 { 8 9 int date1[]={1,3,5,7,9,11,13,15,17,19,2,4,6,8,10,12,14,16,18,20}; 10 for(int i=0;i<20-1;i++) 11 { 12 for(int j=0;j<20-i-1;j++) 13 { 14 if(date1[j]>date1[j+1]) 15 { 16 int temp=date1[j]; 17 date1[j]=date1[j+1]; 18 date1[j+1]=temp; 19 } 20 } 21 } 22 int n; 23 cout<<"请输入要寻找的数"<<endl; 24 cin>>n; 25 int l=0,r=19,mid; 26 while(l<=r) 27 { 28 mid=(l+r)/2; 29 if(date1[mid]>n) 30 r=mid-1; 31 else if(date1[mid]<n) 32 l=mid+1; 33 else 34 break; 35 } 36 cout<<mid; 37 }
标签:date1,12,20,int,19,2023.5,打卡,include From: https://www.cnblogs.com/lixinyao20223933/p/17396223.html