《演算法筆記》Codeup練習 4 5小節 二分

2021-10-05 06:57:51 字數 2025 閱讀 9419

題目大意

給出一組互不相同的數,在其中找出指定某個數的下標位置,若找不到則輸出-1

思路

本題資料量不大,可以直接用遍歷查詢

鑑於這是在二分下面的題目,也可以用二分做

過程中犯的錯誤

一開始因為被小結名稱——二分給影響了,一心使用二分。就想當然的排序,之後二分查詢,提交錯了好多遍都沒意識到自己已經把數字的原順序給改變了。

有被自己蠢到

**1 遍歷

//輸入乙個數n,然後輸入n個數值各不相同,再輸入乙個值x,輸出這個值在這個陣列中的下標(從0開始,若不在陣列中則輸出-1)

#include

#include

#include

#include

using namespace std;

intmain()

;while

(scanf

("%d"

,&n)

!=eof

)printf

("%d\n"

,k);

}return0;

}

**2 二分

#include

#include

#include

#include

using namespace std;

struct myp[

201]

;bool cmp

(my s,my q)

intfindx

(my *a,

int left,

int right,

int x)

return-1

;}intmain()

scanf

("%d"

,&x)

;sort

(p,p+n,cmp)

;printf

("%d\n"

,findx

(p,0

,n-1

,x));}

return0;

}

題目大意

給一組數,找出其中極值的下標值並輸出,若無則不輸出任何

題目思路

遍歷判斷,首尾兩數單獨判斷

**

#include

#include

#include

#include

using namespace std;

intmain()

for(

int i=

1;i1;i++)}

if(a[k-1]

!=a[k-2]

)if(flag)

printf

("\n");

}}return0;

}

題目大意

已知n個數的乙個陣列,再給m個數,判斷這m個數是否存在n個數中,存在輸出yes,不存在輸出no

題目思路

遍歷m個數,進行二分查詢(二分需要將n個數先進行重排序)

**

#include

#include

#include

#include

using namespace std;

intfindx

(int

*a,int left,

int right,

int x)

return-1

;}intmain()

for(

int i=

0;i)else}}

return0;

}

演算法筆記Codeup練習C語言11 1

題目描述 完成乙個對候選人得票的統計程式。假設有3個候選人,名字分別為li,zhang和fun。使用結構體儲存每乙個候選人的名字和得票數。記錄每一張選票的得票人名,輸出每個候選人最終的得票數。結構體可以定義成如下的格式 struct person leader 3 輸入第一行有乙個整數n,表示以下有...

演算法筆記Codeup練習C語言11 7

題目描述 編寫兩個函式input和print,分別用來輸入5個學生的資料記錄和列印這5個學生的記錄。對於每乙個學生,其記錄包含了學號 名字 3門課程的成績共5項。用主函式分別呼叫input和print函式進行輸入和輸出。要求使用結構體陣列實現,結構體中包括了每個學生的5項記錄。輸入共有5行,每行包含...

演算法筆記Codeup練習C語言11 8

題目描述 有10個學生,每個學生的資料報括學號 姓名 3門課程的成績。讀入這10個學生的資料,要求輸出3門課程的總平均成績,以及個人平均分最高的學生的資料 包括學號 姓名 3門課程成績 平均分數 輸入共有10行,每行包含了乙個學生的學號 整數 名字 長度不超過19的無空格字串 和3門課程的成績 0至...