十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
C語言的二分法,想必很多朋友都在初學(xué)時是一個難啃的骨頭,因為這是必須掌握的最基礎(chǔ)的一種算法。在這里我分享一下這個簡單的#二分法#查找有序數(shù)組
#include
int binary_search(int arr[],int key, int left, int right)
{
while (left <= right)
{
int mid = left + (right - left) / 2;
if (a[mid]key)
{
right = mid - 1;
}
else
{
return mid;
}
}
return -1;
}
int main()
{
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int left = 0, right = sizeof(arr) / sizeof(arr[0]) - 1 ;//right是通過sizeof計算真?zhèn)€數(shù)組的大小,從而算出最左邊的下標
int ret, key;
scanf("%d", &key);
ret = binary_search(arr,key, left, right);
if (-1 == ret)
{
printf("找不到");
}
else
{
printf("找到了,下標是%d", ret);
}
system("pause");
return 0;
}
還有就是一個有關(guān)設(shè)置flag的程序,也在這給大家分享一下,也僅僅是實現(xiàn)正負符號的依次轉(zhuǎn)換。
#include
using namespace std;
void calculate()//計算
{
int flag = 1;
double s = 0,i;
for (i = 1; i <= 100; i++){
s = s +flag*(1 / i);
flag = -flag;
}
cout << "1/1-1/2+1/3-1/4...+1/99-1/100=" << s << endl;
}
int main()
{
calculate();
system("pause");
return 0;
}//這有些程序是通過c++的一些語法,在當(dāng)時認為這種方式更簡單,但還是希望大家從基礎(chǔ)開始一步一步練習(xí)
這僅僅是初學(xué)C語言遇到一些比較頻繁的代碼
注:在這里給大家提一個建議,len=sizeof(arr)/sizeof(a[0])在哪里定義就在哪里使用(如在函數(shù)中int arr[]為指針大小為4個字節(jié),而定義在主函數(shù)中則為數(shù)組大小,是因為形參為指針形式)
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。