数组应用之————二分法查找

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _99
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] dns = new int[] { 3, 8, 9, 10, 16, 28, 36, 42, 58, 79, 98, 99 };
            Console.Write("输入你要查找的数");
            int n = Convert.ToInt32(Console.ReadLine());

            int top, bottom, mid;
            top = 0;

            bottom = dns.Length - 1;
            while (bottom>=top )
            {
                mid = (top + bottom) / 2;
                int k = dns[mid];
                if (k < n)
                {
                    top = mid + 1;
                }
                else if (k > n)
                {
                bottom=mid-1;
                }else
                {
                    Console .WriteLine ("你找的值在"+mid+"位置");
                    break;
                }
                Console.ReadLine();
            }

        }
    }
}
时间: 2024-11-05 12:33:06

数组应用之————二分法查找的相关文章

在数组中使用二分法查找

package com.db2; import java.util.Arrays; /** * 二分法查找 * * @author denny 使用二分法查找的前提数组已经排过序 * */ public class Demo4 { public static void main(String[] args) { int[] arr = { 3, 1, 8, 2, 9, 100, 33, 22, 11, 18, 14, 17, 15, 3 }; // 使用Arrays.sort()排序 Array

数组拷贝,二分法查找

Arrays.copyOfRange(int[] arr,int开始下标,int结束下标)//左闭右开 System.arraycopy(int[] source,int开始下标,int[] dest,int开始下标,int拷贝多少个) 这里是手动拷贝: public static int[] copyOf(int[] original, int newLength) { int[] dest = new int[newLength]; int length = original.length

二分法查找(数组元素无序)

问题描述: 一数组,含有一堆无序数据,首先将数据按顺序排列,再用二分法实现某个元素的查找,若找到,返回该元素在数组中的下表,否则,返回不存在提示信息. #include<stdio.h> #include<stdlib.h> int *bubble_sort(int a[],int n)//冒泡排序(将数据升序排列) { int i; int j; int tmp; for(j=0;j<n-1;++j)//n个元素需要排序n-1趟 { for(i=0;i<n-j-1;+

用最小的内存和二分法查找数组中是否存在这个数

package Test; public class Test { //用最小的内存查找数组中是否存在这个数 public static void main(String[] args) { int [] arr = {12,2,3,4,5,6,7,8,90,76,43}; byte[] byt = new byte[100]; for (int i = 0; i < arr.length; i++) { byt[arr[i]] = 1; } int n = 13; if(byt[n] == 1

二分法查找(数组)php

二分查找法需要数组是一个有序的数组 假设我们的数组是一个递增的数组,首先我们需要找到数组的中间位置. 一.要知道中间位置就需要知道起始位置和结束位置,然后取出中间位置的值来和我们的值做对比. 二.如果中间值大于我们的给定值,说明我们的值在中间位置之前,此时需要再次二分,因为在中间之前,所以我们需要变的值是结束位置的值,此时结束位置的值应该是我们此时的中间位置. 三.反之,如果中间值小于我们给定的值,那么说明给定值在中间位置之后,此时需要再次将后一部分的值进行二分,因为在中间值之后,所以我们需要改

#C语言#二分法查找有序数组

C语言的二分法,想必很多朋友都在初学时是一个难啃的骨头,因为这是必须掌握的最基础的一种算法.在这里我分享一下这个简单的#二分法#查找有序数组 #include<stdio.h> int binary_search(int arr[],int key, int left, int right) { while (left <= right) { int mid = left + (right - left) / 2; if (a[mid]<key) { left = mid + 1;

JavaSE语言基础之数组二分法查找

一.概念: 算法:当数据量很大适宜采用该方法.采用二分法查找时,数据需是排好序的. 基本思想:假设数据是按升序排序的,对于给定值key,从序列的中间位置k开始比较, 如果当前位置arr[k]值等于key,则查找成功: 若key小于当前位置值arr[k],则在数列的前半段中查找,arr[low,mid-1]: 若key大于当前位置值arr[k],则在数列的后半段中继续查找arr[mid+1,high], 直到找到为止,时间复杂度:O(log(n)).(摘自百度百科) 二.代码 int[] arr

java的二分法查找数据

Java二分法查找的源代码:    二分查找是一种高效率线性表的查找算法.在查找时必须将线性表中的关键词排好序.基本思路是:先断定线性表的中心方位 mid=(first+last)/2:对比所要查找的关键词 key与中心方位的关键词的巨细,假如比key和mid.key持平则回来: key比mid.key大(假定为升序)这所要查找的关键词在mid和last之间:否则在first与mid之间.持续按照上面办法查找中心元素,直到找到为止.    详细完成如下package com.cgogo; /**

数组排序 和 二分法查找

二分法查找 当数据量很大适宜采用该方法.采用二分法查找时,数据需是有序不重复的. 基本思想:假设数据是按升序排序的,对于给定值 x,从序列的中间位置开始比较,如果当前位置值等于 x,则查找成功:若 x 小于当前位置值,则在数列的前半段中查找:若 x 大于当前位置值则在数列的后半段中继续查找,直到找到为止. 假设有一个数组 {5,4,2, 67, 77, 89, 90,4,9,1,12, 23, 34, 45, 56 },现要求采用二分法找出指定的数值并将其在数组的索引返回,如果没有找到则返回 -