3 13日演算法 上機作業

2021-08-16 20:26:39 字數 1111 閱讀 7101

題目:以遞迴和分治的思想實現二分搜尋

題目分析,二分搜尋是在解空間有序的情況下,取整體中間的值與目標值進行對比,如果與目標值相同,那麼就是所求解,否則,若比中間值大,則刪去小的那一半,這樣每次可以減少一半的查詢,二分搜尋的複雜度應該為 o(log n) ,對於整個程式來說,我們要讓乙個隨機的陣列有序,呼叫algorithmn 庫的中函式sort ,此時的時間複雜度應該o (nlogn) ,因此在這種情況下,整個程式中時間開銷最大的應該是排序的時間,所以整個程式的時間複雜度應該為 o(nlogn)

**如下

#include 

#define cl(arr) memset(arr,0,sizeof(arr))

#define fl(arr,val) memset(arr,val,sizeof(arr))

using

namespace

std;

const

int maxn=1e5+50;

const

int mod=1e9+7;

const

int inf=0x3f3f3f3f;

typedef pairpii;

typedef

long

long ll;

int n;

int a[maxn];

int pos=-1;

void binarysearch(int x,int l,int r)

int mid=l+(r-l)/2;

if(a[mid]==x)

if(a[mid]>x)

else

}int main()

sort(a+1,a+101);

for(int i=1; i<=100; i++)

printf("\n");

int k;

scanf("%d",&k);

binarysearch(k,1,100);

if(pos==-1)

else

printf("%d\n",pos);

return

0;}

輸出分析:本程式通過查詢陣列中的某乙個數,返回該數在陣列的中索引。通過二分的方式查詢該索引。

3 7日C 上機作業

題目1 修改教材的clock類,增加物件的行為 內容 1 走時 2 以12時制的形式顯示時鐘的當前值 3 編寫測試類的程式 建立兩個時鐘物件,分別呼叫物件的行為.設計思路 根據系統自帶的clock t的函式,再設定空迴圈,我們能夠使系統延遲1秒輸出,同時在時鐘的類當中增加設定時鐘和顯示時鐘的函式 i...

4月9日上機作業

1.編寫乙個簡單程式,要求陣列長度為5,靜態賦值10,20,30,40,50,在控制台輸出該陣列的值。package demo1 public class d1 for int i 0 i 2.編寫乙個簡單程式,要求陣列長度為5,動態賦值10,20,30,40,50,在控制台輸出該陣列的值。pack...

c 上機作業

1 時鐘類 include using namespace std class time int add a minute int add an hour int add seconds int n int add minutes int n int add hours int n void tia...