C++ 先对数组排序,在进行折半查找

 更新时间:2020年4月25日 17:43  点击:1611

第一步:输入15个整数

第二步:对这15个数进行排序

第三部:输入一个数,在后在排好序的数中进行折半查找,判断该数的位置

实现代码如下:

方法一:

选择排序法+循环折半查找法

复制代码 代码如下:

#include<iostream>
using namespace std;
int main(){
 int a[15];
 int n,i;
 void array_sort(int a[], int n);
 int zeban(int a[], int start ,int end,int n);
 cout<<"Please input 15 numbers:"<<endl;
 for(i=0;i<15;i++){
  cin>>a[i];
 }
 cout<<"Sorted order:"<<endl;
 //==============选择排序========
 array_sort(a,15);
 //=======输出排序完成的数组====
    for(i=0;i<15;i++){
  cout<<a[i]<<" ";
  }
 cout<<endl;
 cout<<"please input a number:";
 cin>>n;
 //================折半查找==========
 cout<<endl;
 cout<<"number "<<n<<" locate in "<<zeban(a,0,14,n)<<endl;
 return 0;
}
void array_sort(int a[],int n){
 int i,j,k,tool;
     for(i=0;i<n;i++){
  k=i;
  for(j=(i+1);j<n;j++){
  if(a[j]<a[k]){
     k=j;
        }
  }
  tool=a[i];
  a[i]=a[k];
  a[k]=tool;
  }
}
int zeban(int a[],int start,int end,int n){
 int tag=-1;
 for(start=0,end=14;start<=end;){
  if(n==a[(start+end)/2]){
   tag=(start+end)/2+1;
   return tag;
  }else if(n<a[(start+end)/2]){
   end=(start+end)/2;
  }else if(n>a[(start+end)/2]){
   start=(start+end)/2;
  }
 }
}

第二种方法:

冒泡排序法+递归折半查找法

复制代码 代码如下:

#include<iostream>
using namespace std;
int main(){
 int a[15];
 int n,i;
 void array_sort(int a[], int n);
    int IterBiSearch(int data[], const int x, int beg, int last);
 cout<<"Please input 15 numbers:"<<endl;
 for(i=0;i<15;i++){
  cin>>a[i];
 }
 cout<<"Sorted order:"<<endl;
 //==============选择排序========
 array_sort(a,15);
 //=======输出排序完成的数组====
    for(i=0;i<15;i++){
  cout<<a[i]<<" ";
  }
 cout<<endl;
 cout<<"please input a number:";
 cin>>n;
 //================折半查找==========
 cout<<endl;
 cout<<"number "<<n<<" locate in "<<IterBiSearch(a,n, 0, 14)<<endl;
 return 0;
}
void array_sort(int a[],int n){
 int i,j,tool;
     for(i=0;i<n;i++){
     for(j=0;j<(n-i-1);j++){
        if(a[j]>a[j+1]){
           tool=a[j];
           a[j]=a[j+1];
           a[j+1]=tool;
        }
     }
    }
}
int IterBiSearch(int data[], const int x, int beg, int last) 

    int mid = -1; 
    mid = (beg + last) / 2; 
    if (x == data[mid]) 
    { 
        return (mid+1); 
    } 
    else if (x < data[mid]) 
    { 
        return IterBiSearch(data, x, beg, mid - 1); 
    } 
    else if (x > data[mid]) 
    { 
        return IterBiSearch(data, x, mid + 1, last); 
    } 
    return -1; 

[!--infotagslink--]

相关文章

  • js实现数组冒泡排序、快速排序原理

    这篇文章主要为大家详细介绍了js实现数组冒泡排序、快速排序的原理,感兴趣的小伙伴们可以参考一下...2016-03-10
  • JavaScript数值数组排序示例分享

    但是,我们在使用中就会发现问题,这里的数组排序方法并不是按照我们想像中的数字大小来排序的,而是按照字符串测试结果改变原先的数据。这并不是我们想要的。那么如何才可以得到我们想要的按照我们思维中的数字大小来排序...2014-05-31
  • PHP关联数组排序几种方法

    对于普通数据排序我们直接使用系统自带数组排序函数即可,如果是关系数组排序你知道如何操作吧?下面来给各位整理了几个例子大家一起来看看吧。 参数说明:$data 目标...2016-11-25
  • php二维数组排序后获取最大值

    PHP一维数组的排序可以用sort(),asort(),arsort()等函数,但是PHP二维数组的排序需要自定义。 自定义: 代码如下 复制代码 function array_sort...2016-11-25
  • C++实现数组的排序/插入重新排序/以及逆置操作详解

    将新的数字与已经排序好的数组中的数字一一比较,直到找到插入点,然后将插入点以后的数字都向后移动一个单位(a[i+1]=a[i]),然后将数据插入即可...2020-04-25
  • php数组排序几个程序实例

    A.内部排序(直接加载到内存进行排序):包括交换式排序(冒泡和快速法)、选择式排序、插入式排序 B.外部排序(因数据量大,需借助外部存储进行排序):包括合并排序、直接合并排序...2016-11-25
  • PHP中数组排序函数详解

    在php中自带了大量了数组排序函数,下面我们一一来介绍一下关于php数组排序的用法吧。 数组被作为排序函数的参数,排序以后,数组本身就发生了改变,函数的返回值为bool...2016-11-25
  • php 二维数组排序实现程序

    在php中对二维数组排序我们可以直接使用array_multisort()函数即可实现,同时我也收藏了一些自定对二维数组排序代码大家可参考。 先来看array_multisort()函数 ...2016-11-25
  • php 二维数组排序使用详解

    二维数组排序与普通数据排序不一样因为二维数组排序需要使用一些一维数据用不到的方式,具体的我们来看二维数组排序的例子。 昨天要排序数组的时候发现了,要按时...2016-11-25
  • C#数组排序的两种常用方法

    这篇文章主要介绍了C#数组排序的两种常用方法,实例分析了C#操作数组的相关技巧,需要的朋友可以参考下...2020-06-25
  • php 多维数组排序 array_multisort函数用法

    array_multisort函数是php自带对二维数据进行排序的函数,下面我们一起来看看多维数组排序 array_multisort函数用法,希望文章能够帮助到各位。 对2维数组或者多维...2016-11-25
  • php二维数组排序代码

    一个简单的php 二维数组按第二维 里面的元素进行排序这样不影响数据,只对数组里面的内容进行排序一下,有需要的朋友参考一下。 代码如下 复制代码 ...2016-11-25
  • php中数组排序各种方法

    在我们学程序时就知道排序大概有泡排序法、快速排序法、选择排序法等,同时排序方法 分为两在类内部和外部。 数组的排序方法 分为两在类: 1、内(内存)部排序 2、外...2016-11-25
  • php 对数组排序实例代码

    php 对数组排序实例代码 * 对数组排序 * @param array $array 操作的数组 * @param string $type key按键排序,value按值排序 * @param string $field 字段...2016-11-25
  • php数组排序的各种方法总结

    在php中我们要对一维数组排序做起来很简单我们只要用到sort(),rsort()这样就完成了,如果要对多维数据排序的话php还没这类函数这个就需要我们自己来做了。 对于php...2016-11-25
  • php多维数组排序方法

    本文章详细的介绍了关于多维数组排序的方法,array_multisort()这个函数可以对多个PHP数组进行排序,排序结果是所有的数组都按第一个数组的顺序进行排列——有点拗口,真的...2016-11-25
  • PHP二维数组排序问题详解(数组键值排序)

    在php中数组排序一直是一个大家论证的话题,下面我来给各位朋友详细介绍关于在php中二维数组排序问题,有需要了解的数组排序的朋友可参考。 根据某个键值对二维数组...2016-11-25
  • php数组冒泡排序算法实例

    这篇文章主要介绍了php数组冒泡排序算法,以简单实例形式分析了php数组冒泡排序算法的实现原理与相关技巧,需要的朋友可以参考下...2016-05-10
  • php数组排序简单方法

    本文章主要求介绍了利用php自带的函数来实现数组进行排序,包括了一维数组排名,多维数组排序,随机排序等。 array_multisort($a,$b),$a,$b是两个数 &bull;sort() 函数...2016-11-25
  • php常用的数组排序函数实例

    下面本文章主要讲到关于我们常用的数组排序函数的使用方法与实例了,有arsort asort krsort natcasesort rsort等哦。 $fruits=array( "d"=>"lemon", "a"=>"orang...2016-11-25