2023.5.12编程一小时打卡

一、问题描述:

初始化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 }

 

posted @ 2023-05-12 20:26  信2211-8李欣垚  阅读(22)  评论(0)    收藏  举报