查找与排序

#include <iostream>
using namespace std;
//二分查找算法实现
int BinarySearch(int a[],int len,int findnum)
{
    int low = 0;
    int high = len - 1;
    while(low <= high)
    {
        int middle = (low + high)/2;
        if(a[middle] == findnum)
        {
            return middle;
        }
        else if(a[middle] > findnum)
        {
            high = middle - 1;
        }
        else
        {
            low = middle + 1;
        }
    }
    return -1;
}
void main()
{
    int a[]={1,3,6,8,9,11,55,77,88};
    int leng=sizeof(a)/sizeof(int);
    int low=0;
    int hig=leng-1;
    int mid=(hig+low)/2;
    cout<<"please input the number you want to find: ";
    int findnum=0;
    cin>>findnum;
    int iRet=BinarySearch(a,leng,findnum);
    if (iRet==-1)
    {
        cout<<"没找到";
    }
    else
        cout<<iRet;
}

查找与排序

时间: 2024-10-12 05:10:59

查找与排序的相关文章

C++ 中对vector&lt;T*&gt; 数组的查找和排序

//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include <vector> #include <algorithm> using namespace std; //-----------------------------------

查找与排序02,折半查找

折半查找,也叫二分查找,当在一个数组或集合中查找某个元素时,先定位出中间位置元素,如果要查找的元素正好和该中间位置元素相等,通过一次查找,就能找到匹配元素:如果要查找的元素小于该中间位置元素,就抛弃后面一半的元素,在前面一半的元素中再定位出中间位置元素,如此反复,直到找到匹配元素:如果要查找的元素大于该中间位置元素,就抛弃前面一半的元素,在后面一半的元素中定位出中间位置元素,如此反复. 面临的第一个问题是:中间位置元素如何定位?在折半查找中规定:当元素个数是奇数,比如有3个元素,中间位置元素是索

关于查找与排序

查找和排序都是程序中经常用到的算法 查找分为:顺序查找,二分查找.哈希表查找和二叉树排序查找. 哈希表和二叉树查找的重点在于其数据结构.哈希表的主要优点是能够在O(1)的时间查找某一元素,是效率最高的查找方式.其缺点是需要额外的空间来实现哈希表. 排序分为插入排序,冒泡排序,递归排序,快速排序等.排序的这几种方法的优劣(额外空间的消耗,平均时间复杂度和最差时间复杂度).特点是重点. 快速排序 快速排序关键在于先在数组中选择一个数字,接下来吧数组中的数字分为两部分,比选择数组小的放到左边,大的放到

查找与排序05,冒泡排序

在体验了"选择排序"和"插入排序",本篇体验的是"冒泡排序",依次遍历数组中的元素,按照升序排列,如果前一个位置元素比后一个位置元素大,两者就交换位置. 自定义一个处理整型数组的类,包含添加.显示.清除及冒泡方法以及获取数组长度的属性. class MyIntArray { private int[] arr; private int upper; //最大索引 private int index; //当前索引 public MyIntArra

二叉查找(排序)树的分析与实现

二叉排序树(Binary Sort Tree)又称二叉查找树(Binary Search Tree),亦称二叉搜索树. 图from baike 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值: (2)若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值: (3)左.右子树也分别为二叉排序树: (4)没有键值相等的节点. 步骤:若根结点的关键字值等于查找的关键字,成功.否则,若小于根结点的关键字值,递归查左子树.若大

查找与排序04,插入排序

在选择排序中,从第一个元素开始,依次遍历数组中的元素,找出当前遍历元素之后的最小元素,与当前遍历元素交换位置,依此类推,是一种由前往后的排序.而在插入排序中,从第二个元素开始,依次遍历数组中的元素,把当前遍历元素与之前的元素进行比较,并插入到之前的某个位置,是一种由后往前的排序. 自定义一个类,里面维护着一个int[]类型数组,通过构造函数定义数组长度并初始化,并提供了打印和插入排序的相关方法. public class MyArray { private static int[] arr; p

实验三-查找与排序-5(选做,加分) 补做

题目 编写Android程序对各种查找与排序算法进行测试 提交运行结果截图 推送代码到码云 解答 import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import

20172327 2018-2019-1 《程序设计与数据结构》实验三:查找与排序

20172327 2018-2019-1 <程序设计与数据结构>实验三:查找与排序 课程:<Java软件结构与数据结构> 班级:201723 姓名:马瑞蕃 学号:20172327 实验教师:王志强 实验日期:2018年11月19日 必修/选修:必修 一.实验内容: 实验二 查找与排序-1 1.定义一个Searching和Sorting类,并在类中实现linearSearch(教材P162 ),SelectionSort方法(P169),最后完成测试. 2.要求不少于10个测试用例,

查找和排序的基本操作:查找排序算法大集合

重点 查找算法着重掌握:顺序查找.二分查找.哈希表查找.二叉排序树查找. 排序算法着重掌握:冒泡排序.插入排序.归并排序.快速排序. 顺序查找 算法说明 顺序查找适合于存储结构为顺序存储或链接存储的线性表. 算法思想 顺序查找也称为线形查找,属于无序查找算法.从数据结构线形表的一端开始,顺序扫描,依次将扫描到的结点关键字与给定值k相比较,若相等则表示查找成功:若扫描结束仍没有找到关键字等于k的结点,表示查找失败. 算法实现 int sequenceSearch(int a[], int valu