查找算法之索引顺序查找

来源:互联网 发布:msvcp120.dll丢失知乎 编辑:程序博客网 时间:2024/05/19 08:06
/***************索引顺序查找算法:分块查找,是顺序查找的一种改进1.将数组分块,并标记各子块的数据范围2.根据查找的数据大小,决定在哪一子块内顺序查找***************/#include<iostream>using namespace std;#include<time.h>#define n 18int main(){  time_t ts;  srand((unsigned int)time(&ts));                   //设置随机数种子  int a[n]={0};  for(int i=0;i<n;i++)  {//将数组分为3块,第一块存储的是22以内的数据,第二块存储的是23-48的数据,第三块存储的是49-86的数据   //如何让随机数据限定在一个范围内呢,可以利用除模加法的方式:例如:要让随机数在m<=r<=n,公式:rand()%(n-m+1)+m  if(i<6)      {  a[i]=rand()%23;       cout<<a[i]<<" ";  }  if(i>=6 && i<12)  {      a[i]=rand()%26+23;      cout<<a[i]<<" ";  }  if(i>=12 && i<18)  {     a[i]=rand()%39+48;      cout<<a[i]<<" ";  }  }  int m;  cout<<"\n请输入查找的数据\n";  cin>>m;  if(m<=22)  {    int i;    for(i=0;i<6;i++){  if(m==a[i])  {     cout<<"你要查找的数据:"<<a[i]<<endl; break;  }}if(i==6){  cout<<"error\n";}  }  if(m>22 && m<=48)  {int j;    for(j=6;j<12;j++){   if(a[j]==m)   {      cout<<"你要查找的数据:"<<a[j]<<endl;  break;   }}if(j==12){  cout<<"error\n";}  }  if(m>48 && m<=86)  {int k;    for(k=12;k<18;k++){   if(a[k]==m)   {      cout<<"你要查找的数据:"<<a[k]<<endl;  break;   }}if(k==18){  cout<<"error\n";}  }  return 0;}

0 0
原创粉丝点击