第一步:输入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;
}

先对数组排序,在进行折半查找(C++)的更多相关文章

  1. 折半查找,binarySearch

    折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务.它的基本思想是,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比 ...

  2. 算法与数据结构(九) 查找表的顺序查找、折半查找、插值查找以及Fibonacci查找

    今天这篇博客就聊聊几种常见的查找算法,当然本篇博客只是涉及了部分查找算法,接下来的几篇博客中都将会介绍关于查找的相关内容.本篇博客主要介绍查找表的顺序查找.折半查找.插值查找以及Fibonacci查找 ...

  3. 折半查找(java)(边学习边更新)

    ---恢复内容开始--- class ArrayTest3 { public static void main(String[] args) { //int [] arr=new int[]{54,4 ...

  4. C语言之实现函数返回一个数组,以及选择排序,还有折半查找。这是同学的一个作业。。。

    作业的具体要求如下: 编写一个完整的程序,实现如下功能.(1)    输入10个无序的整数.(2)    用选择排序法将以上接收的10个无序整数按从大到小的顺序排序.(3)    要求任意输入一个整数 ...

  5. c语言折半查找

    折半查找又称为二分查找,它的前提是线性表中的记录必须是有序的(通常从小到大有序),线性表必须采用顺序存储. 折半查找的基本思想是 : 在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键字相等 ...

  6. 折半查找&clock函数

    #include <stdio.h>#include <time.h> #define CLOCKS_PER_SEC ((clock_t)1000) int binsearch ...

  7. 二分查找or折半查找

    package com.gxf.search; /** * 测试折半查找or二分查找 * @author xiangfei * */ public class BiSearch { /** * 非递归 ...

  8. Java 实现折半查找

    package search; import java.util.*; /*折半查找要求线性表是有序的,假设递增 * 基本思路:R[low...high]是当前的查找区间,首先确定中间位置mid=(l ...

  9. c - 折半查找(二分法检索)

    #include <stdio.h> #define LEN 10 /* 折半查找(二分法检索). */ int index_of(int *a, int k) { ; ; int m; ...

随机推荐

  1. Web API-属性路由

    路由(Routing)就是Web API如何将一个URI匹配到一个action的过程.Web API 2 支持一个新的路由方式-属性路由(attribute routing).顾名思义,属性路由使用标 ...

  2. 使用JavaScriptSerializer进行序列化日期类型应该注意的问题

    原文:使用JavaScriptSerializer进行序列化日期类型应该注意的问题 JavaScriptSerializer在序列化DateTime时,是用刻度来表示的,具体在Json体现为:\/Da ...

  3. 【麦子学院】OpenCV教程函数总结

    个自带样例. parter 1: No1. adaptiveskindetector.cpp 利用HSV空间的色调信息的皮肤检測,背景不能有太多与肤色相似的颜色.效果不是特别好. No2. bagof ...

  4. Android接口测试-JUnit入门

    1.下载:http://www.junit.org 2.配置AndroidManifest.xml,在application节点加入 <!--使用单元测试库-->        <u ...

  5. NHibernate-Generator主键生成方式

    NHibernate之Generator主键生成方式   (1) assigned主键由外部程序负责生成,无需NHibernate参与. (2) hilo通过hi/lo 算法实现的主键生成机制,需要额 ...

  6. Java程序员应该知道的10个Eclipse调试技巧

    Eclipse是众多Java程序员实用的开发工具,其中开发技巧也是繁多,但作为优秀的Java程序员,需要掌握最起码的调试技巧. 1 条件断点 2 异常断点 3 监视点 4 评估/检查 5 修改变量值 ...

  7. 工欲善其事:编辑器之神Vim(一)

    本篇文章收集了Vim最常用和实用的一些命令,掌握这些命令就可以使用Vim了 本文仅列举个人认为常用的命令,本系列文章更像是自己的学习笔记,而不是VIM使用教程. 如果你想了解vim的更多,可以看看Co ...

  8. leetcode第21题--Generate Parentheses

    problem: Given n pairs of parentheses, write a function to generate all combinations of well-formed ...

  9. Visual Studio 2015 & C#6.0 试用报告,持续更新。

    昨天早上看到了.net开源的消息,我是非常兴奋的,毕竟局限于Windows的.NET经常被人唾弃.VB暂且不提,C#常年被人指责跨平台性不佳,我也是无能为力.即使有Mono等第三方跨平台工程,.NET ...

  10. Your build host version of Xamarin.IOS (release NO.)is too recent to work with the IOS designer

    Encounted such error in VS after I update the xamarin at Mac side.Here is the solution for u to refe ...