终于完成了,哈哈!
我只是把自己的课本上的一个算法用C++实现了一边,第一次用的是函数的方法,这次用的是类的方法!请大家看看,设计的是否合理,有不足之处希望大虾们不息赐教,哈哈!
>>>>>>>>>>>>>study6a.cpp<<<<<<<<<<<<<<<<
#include <iostream>
#include <stdlib.h>
#include "study6a.h"
#define maxnum 3
using namespace std;
binarysearch::binarysearch(int *numlist,int max){
list=numlist;
maxlimit=max;
}
int *binarysearch::sortlist()
{
int tempnum;
for(int pass=0;pass<=maxlimit-1;pass++)
for(int c=0;c<=maxlimit-pass-2;c++)
{
if (list[c]>list[c+1])
{
tempnum=list[c];
list[c]=list[c+1];
list[c+1]=tempnum;
}
}
return list;
}
int binarysearch::gettarget(){
int targetnum;
cout<<"属于要查找的数字"<<endl;
cin>>targetnum;
return targetnum;
}
int binarysearch::search(int target){
bool found=0;
int low=0;
int middle;
int high=maxlimit;
while((low<=high)&&(found==0))
{
middle=(low+high)/2;
if (list[middle]==target)
{
return middle+1;
found=1;
}
else
if (list[middle]>target)
high=middle-1;
else
low=middle+1;
}
if (found==0)
return 0;
}
binarysearch::~binarysearch(){}
int main(){
int stringlist[maxnum];
int *stradd=stringlist;
int target,result;
cout<<"请输入一组数字"<<endl;
for(int i=0;i<=maxnum-1;i++)
{
cin>>stringlist[i];
}
binarysearch BS(stradd,maxnum);
/*列出排列好的数组
for(int i=0;i<=maxnum-1;i++)
{
cout<<*BS.sortlist()+i<<endl;
}
*/
BS.sortlist();
target=BS.gettarget();
result=BS.search(target);
if (result==0)
{
cout<<"没有找到数字"<<target<<endl;
}
else
{
cout<<"数字"<<target<<"已经找到位置在"<<result<<endl;
}
system("pause");
return 0;
}
>>>>>>>>>>>>>study6a.h<<<<<<<<<<<<<<<<
#ifndef study6a_H_
#define study6a_H_
class binarysearch{
private:
int maxlimit;
int *list;
public:
binarysearch(int*,int);
~binarysearch();
int *sortlist();
int gettarget();
int search(int);
};
#endif