求c++程序,折半查找算法 C++折半查找的基本思想和步驟
int search(int low,int high,int n,int num[]);
void main()
{
int i,n,num[20];
for (i=0;i<=19;i++)
{
num[i]=i+10;
printf("%d ",num[i]);
}
printf("輸入要查找的數(shù):");
scanf("%d",&n);
printf("%d\n",search(0,19,n,num));
}
int search(int low,int high,int n,int num[])
{
int mid;
mid = (low+high)/2;
if (n==num[mid])
return mid;
else if(n>num[mid])
search(mid+1,high,n,num);
else
search(low, mid-1,n,num);
} 給分!!!
template <class Record, class Key>
int binary_search( Record * r, const int & low, const int & high, const Key & k )
{
int mid = (low + high)/2;
if( low < high )
{
if( k <= r[mid] )
binary_search( r, low, mid, k );
else
binary_search( r, mid+1, high, k );
}
else if( low == high )
{
if( k == r[mid] )
return low;
else
return -1;
}
else
return -1;
}
//第二個版本的迭代實現(xiàn)(binary_search_v2_iteration)
template <typename Record, typename Key>
int binary_search( Record * r, const int & size, const Key & k )
{
int low=0, high=size-1, mid;
while( low < high )
{
mid = (low + high) / 2;
if( k > r[mid] )
low = mid + 1;
else
high = mid;
}
if( low > high )
return -1;
else
{
if( k == r[low] )
return low;
else
return -1;
}
}
C語言折半查找法接著怎么寫?在線等,謝謝!
while( low <= high ){ pos= (high + low)\/2;if( nums[pos] == key ) return pos;if( nums[pos] < key ){ low = pos+1;} else { high = pos-1;} } return -1;} int main(){ int a[5]={1, 2, 5, 7, 9};printf("%d\\n", find(0, 4, 9, a));} \/*算法...
C語言查找算法:折半查找 中的問題
,&a[i]);}fflush(stdin); \/\/ 如果輸入的數(shù)組元素多于10個,則廢棄scanf_s("%d",&x);low = 0,high = n - 1;while(low <= high) {mid = (low + high) \/ 2;if(x == a[mid]) {result = &a[mid]; \/\/ 這里給出的是查找到該元素的指針break;}else if(x < a[mid])...
用C語言編寫順序查找和二分查找(折半查找)
【二分查找要求】:1.必須采用順序存儲結構 2.必須按關鍵字大小有序排列。【優(yōu)缺點】折半查找法的優(yōu)點是比較次數(shù)少,查找速度快,平均性能好;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查找方法適用于不經(jīng)常變動而查找頻繁的有序列表。【算法思想】首先,將表中間位置記錄的關鍵字與查找...
求C語言編寫程序折半查找程序
BubbleSort(A){ for i=1 to n for j=n to i+1 if A[j]<A[j-1] swap A[j]<->A[j-1]}
c語言先排序后折半查找程序的實驗報告
2實驗內(nèi)容:設定一個整形數(shù)組存放20個元素,用直接賦值的方法在程序中初始化該數(shù)組。先對這些無序的數(shù)據(jù)進行排序,然后采用折半查找,把要尋找的數(shù)的位置輸出出來。3算法描述流程圖 源程序:#include<stdio.h> void main(){int k,s,b,i,j,m,n,a[20]={12,9,16,21,6,11,19,4,8,20,15,...
...實現(xiàn)帶監(jiān)視哨的簡單順序查找算法和折半查找算法并計算其比較次數(shù)_百 ...
printf("1.使用順序查詢.\\n2.使用二分查找法查找.\\n3.退出\\n");scanf("%d",&choise);if(choise==1)SequenceSearch(arr,count);else if(choise==2)Search(arr,count);else if(choise==3)break;} while (choise==1||choise==2||choise==3);} void SequenceSearch(int *fp,int Length)...
...輸入一個數(shù),用折半查找法找出該數(shù)是數(shù)組中第幾個元素的值
include<stdio.h> define N 15 int half_search( int Array[],int ArraySize, int SearchVal ){ int MidPos=0;int HighPos=ArraySize-1;int LowPos=0;while( LowPos<=HighPos ){ MidPos=(LowPos+HighPos)\/2;if( SearchVal == Array[MidPos] )return ( LowPos+HighPos )\/2;else ...
...輸入一個數(shù)要求用折半查找法找出該數(shù)是數(shù)組中的第幾個元素的值,如...
\/ 你好:折半查找法找出該數(shù)是數(shù)組中的 第幾個 元素的值 這個要找的值是數(shù)組元素排序之后的位置 還是排序之前的 因為折半查找要求數(shù)組是有順序的 我調好了一個輸出的是排序之后的 先讓你看看結果,如果是你要的,我在給你代碼 呵呵 \/
編寫一個C函數(shù),利用折半查找算法在一個有序表中插入一個元素x,并保持...
\/*完全手寫沒調過……用前慎重*\/ void insert(int* array, int len, int x){ if(len==0){ \/*array元素整體后移*\/ array = x;return;} if(x<=array[len\/2]) \/\/下取整 insert(array, len\/2, x);else insert(&array[len\/2+1], len\/2, x);} ...
C語言順序查找程序
ST.data[0]=key;\/\/設置監(jiān)視哨。目的在于免去查找過程中每一步都要檢測整 \/\/個表是否查找完畢,是一個很有效的程序設計技巧 。監(jiān)視 \/\/哨也可以設在高下標處。for(i=ST.length;ST.data[i]!=key;i--);return i;} \/\/折半查找(Binary Search)\/\/當記錄的key按關系有序時可以使用折半查找 \/...
相關評說:
葉縣數(shù)學: ______ int binary_search(int val){ int arr[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}; int a = 0, b = 14, m; while( a <= b){ m = (a+b)/2; if(arr[m] == val) return m; if(arr[m] > val){ b = m-1; }else{ a = m+1; } } std::cout << "無此數(shù)" << std::endl; return -1; }
葉縣數(shù)學: ______ http://www.google.com/codesearch?hl=zh-CN&q=+lang:c%2B%2B+binsearch+show:tnC-LLKnLwg:_YBEhkWZaDM:AE4NgCHv0UY&sa=N&cd=1&ct=rc&cs_p=http://wwwse.inf.tu-dresden.de/data/courses/ws05/se1/exercises/binsearch.tgz&cs_f=...
葉縣數(shù)學: ______ 折半查找法是算法一種,可以被任何計算機語言使用.用C語言自然也可以實現(xiàn). 1、定義: 在計算機科學中,折半搜索(英語:half-interval search),也稱二分搜索(英語:binary search)、對數(shù)搜索(英語:logarithmic search),是一種在...
葉縣數(shù)學: ______ 折半查找也叫二分查找,它的提前條件是被查找的數(shù)組是有序的.每次查找一個值的時候,都把數(shù)組中間的元素值求出來,和目標值去比較,從而確定要查找的數(shù)在左半邊還是右半邊,于是每一輪查找都會減少數(shù)組為一半.直至最后找到目標值或者查找失敗.
葉縣數(shù)學: ______ 設立一個計數(shù)器,每次做比較的時候給計數(shù)器加1,最后輸出,或者以某種方式返回給調用者
葉縣數(shù)學: ______ #include void swap(int &a, int a = b; b = tmp; }void select_sort(int* arr, int n){...
葉縣數(shù)學: ______ begin=mid+1; end=mid+1; 否則循環(huán)跳不出來
葉縣數(shù)學: ______ ///////////////////////////////////// // VC 2008測試通過 //////////////////////////////////// #include "StdAfx.h" #include "string.h" #include "iostream" #include <iomanip> using namespace::std; //學生 class student { public: char num[10]; float scs[5]; student(); student...
葉縣數(shù)學: ______ 用快速排序嘛 void sortQ(int* p, int b, int e) { if (b < e) { int m = b; std::cout<<"m= "<<m<<" b="<<b<<std::endl; for (int i = b + 1; i <= e; ++i) { if (p[b] > p[i]) { m += 1; std::cout<<b<<">"<<i<<",m ++ ="...
葉縣數(shù)學: ______ int search(int data[],int x,int len) { int i, j = 0, k = len ; while(j<=k) { i = (j + k)/2 ; if(data[i]>x) k = i - 1 ; else if(data[i]<x) j = i + 1 ; else return (i) ; } return(-1) ; } 查找X元素,如找到返回其所在的數(shù)組下標,否則返回-1 這里有幾個簡單的排序算法,你看看