zoukankan      html  css  js  c++  java
  • 选择排序 冒泡排序 折半排序

    /*
    数组的查找操作。

    练习:有一个有序的数组,想要将一个元素插入到该数组中,
    还要保证该数组是有序的。如何获取该元素在数组中的位置。

    */
    import java.util.*;
    class ArrayTest4
    {
    public static void main(String[] args)
    {
      // int[] arr = {3,2,1,5,4,2,9};
      // int index = getIndex(arr,2);
      // System.out.println("index="+index);

      int[] arr = {2,4,5,7,8,19,32,45};//8

      int index = getIndex_2(arr,190);
      System.out.println("index="+index);

      // int x = Arrays.binarySearch(arr,190);//java提供好的一个进行折半查找的功能。开发时使用这个。
      // System.out.println("x="+x);

    }

    public static int getIndex_2(int[] arr,int key)
    {
    int min = 0,max = arr.length-1,mid;

    while(min<=max)
    {
    mid = (max+min)>>1;

    if(key>arr[mid])
    min = mid + 1;
    else if(key<arr[mid])
    max = mid - 1;
    else
    return mid;
    }
    return min;
    }

    /*
    折半的第二种方式。
    */
    public static int halfSearch_2(int[] arr,int key)
    {
    int min = 0,max = arr.length-1,mid;

    while(min<=max)
    {
    mid = (max+min)>>1;

    if(key>arr[mid])
    min = mid + 1;
    else if(key<arr[mid])
    max = mid - 1;
    else
    return mid;
    }
    return -1;
    }
    /*
    折半查找。提高效率,但是必须要保证该数组是有序的数组。
    */
    public static int halfSearch(int[] arr,int key)
    {
      int min,max,mid;
      min = 0;
      max = arr.length-1;
      mid = (max+min)/2;

      while(arr[mid]!=key)
      {
        if(key>arr[mid])
          min = mid + 1;
        else if(key<arr[mid])
          max = mid - 1;

        if(min>max)
      return -1;
      mid = (max+min)/2;
      }
      return mid;
    }

    //定义功能,获取key第一次出现在数组中的位置。如果返回是-1,那么代表该key在数组中不存在。
    public static int getIndex(int[] arr,int key)
    {
      for(int x=0; x<arr.length; x++)
      {
        if(arr[x]==key)
          return x;
      }
        return -1;
      }
    }

  • 相关阅读:
    计算机为什么要从 0 开始计数?
    MySQL索引结构为什么是B+树
    expdp导出报错ORA-39127
    expdp 跳过坏块
    (转)没有索引导致的DIRECT PATH READ
    Python的实用场景有哪些
    Oracle索引修复 ,ORA-00600: internal error code, arguments: [6200],
    CentOS7.6静默安装19C实例脚本 ORA-27125 [FATAL] [DBT-10322]
    ORA-00313: 无法打开日志组
    cursor: pin S wait on X等待事件的处理过程(转载)
  • 原文地址:https://www.cnblogs.com/kevinfuture/p/4377567.html
Copyright © 2011-2022 走看看