第14週検証アルゴリズム-半減検索
1418 ワード
/*
*Copyright(c)2015、煙台大学コンピュータと制御工学学院
* All rights reserved.
*ファイル名:main.cpp
*著者:于東林
*完成日:2015年1月3日
*バージョン番号:codeblocks
*
*問題の説明:テストシーケンスとして、秩序テーブル{1,3,9,12,32,41,45,62,75,77}を使用して、x=75ルックアップをテストします.
*入力説明:なし
*プログラム出力:実行結果を参照
*/
プログラムおよびコード:
実行結果:
知識ポイントのまとめ:
半角検索は効率的ですが、半角検索では線形テーブルが整列テーブルであり、中間要素を順次比較する必要があります.
学習の心得:
検索を学ぶには、正しい方法で半分の効果を達成することができます.
*Copyright(c)2015、煙台大学コンピュータと制御工学学院
* All rights reserved.
*ファイル名:main.cpp
*著者:于東林
*完成日:2015年1月3日
*バージョン番号:codeblocks
*
*問題の説明:テストシーケンスとして、秩序テーブル{1,3,9,12,32,41,45,62,75,77}を使用して、x=75ルックアップをテストします.
*入力説明:なし
*プログラム出力:実行結果を参照
*/
プログラムおよびコード:
#include <stdio.h>
#define MAXL 100
typedef int KeyType;
typedef char InfoType[10];
typedef struct
{
KeyType key; //KeyType
InfoType data; //
} NodeType;
typedef NodeType SeqList[MAXL]; //
int BinSearch(SeqList R,int n,KeyType k)
{
int low=0,high=n-1,mid;
while (low<=high)
{
mid=(low+high)/2;
if (R[mid].key==k) //
return mid+1;
if (R[mid].key>k) // R[low..mid-1]
high=mid-1;
else
low=mid+1; // R[mid+1..high]
}
return 0;
}
int main()
{
int i,n=10;
int result;
SeqList R;
KeyType a[]= {1,3,9,12,32,41,45,62,75,77},x=75;
for (i=0; i<n; i++)
R[i].key=a[i];
result = BinSearch(R,n,x);
if(result>0)
printf(" %d %d
",result, x);
else
printf(" !
");
return 0;
}
実行結果:
知識ポイントのまとめ:
半角検索は効率的ですが、半角検索では線形テーブルが整列テーブルであり、中間要素を順次比較する必要があります.
学習の心得:
検索を学ぶには、正しい方法で半分の効果を達成することができます.