zoukankan      html  css  js  c++  java
  • 折半查找算法

    1. 折半查找算法

        //折半查找算法
        public static int zhebanSearch(int a[],int n, int x){
            int low,high,mid;
            low=0;
            high=n-1;
            while(low<=high){
                mid=(low+high)/2;
                if(a[mid]==x){
                    return mid;
                }else if(a[mid]>x){
                    high=mid-1;
                }else{
                    low=mid+1;
                }
            }
            return -1;
        }

    2. 折半查找算法使用示例

    package com.cn.find;
    
    import java.util.Scanner;
    
    //折半查找
    public class ZhebanSearch {
        public static final int SIZE=10;
        //折半查找算法
        public static int zhebanSearch(int a[],int n, int x){
            int low,high,mid;
            low=0;
            high=n-1;
            while(low<=high){
                mid=(low+high)/2;
                if(a[mid]==x){
                    return mid;
                }else if(a[mid]>x){
                    high=mid-1;
                }else{
                    low=mid+1;
                }
            }
            return -1;
        }
        
        //快速排序的一次划分
        public static int partition(int[] a,int left, int right){
            int temp,l,r,p;
            l=left;
            r=right;
            p=(left+right)/2;
            temp=a[(left+right)/2];    //将中间元作为分界值
            while(l<r){
                while(a[r]>temp&&l<r) r--;
                if(l<r){
                    a[p]=a[r];
                    p=r;
                }    
                while(a[l]<temp&&l<r) l++;
                if(l<r){
                    a[p]=a[l];
                    p=l;
                }
            }
            a[p]=temp;
            return p;
        }
        //快速排序算法
        public static void quickSort(int[] a,int left,int right){
            int p;
            if(left<right){
                p=partition(a,left,right);
                quickSort(a,left,p-1);
                quickSort(a,p+1,right);
            }
        }
            
        public static void main(String[] args) {
            int[] a = new int[SIZE];
            //为数组赋值
            for(int i=0;i<a.length;i++){
                a[i] = (int) (100 + Math.random()*100);
            }
            //输出排序前的数组
            System.out.println("排序前的数组为:");
            for(int i=0;i<a.length;i++){
                System.out.print(a[i]+" ");
            }
            System.out.println();
            //对数组排序
            quickSort(a,0,a.length-1);
            //输出排序后的数组
            System.out.println("排序后的数组为:");
            for(int i=0;i<a.length;i++){
                System.out.print(a[i]+" ");
            }
            System.out.println();
            while(true){
                System.out.print("请输入要查找到值(-1表示结束):");
                Scanner input = new Scanner(System.in);
                int x = input.nextInt();
                if(x==-1) break;
                int index=zhebanSearch(a,SIZE,x);
                if(index<0){
                    System.out.println("没有找到!");
                }else{
                    System.out.println("数据:"+x+" 位于数组的第"+(index+1)+"个元素处!");
                }
            }
            
        }
    
    }
  • 相关阅读:
    Android ContentProvider 简介
    Android Broadcaset 简介
    Android Service 简介
    XML SAX解析
    XML DOM解析
    RSS新闻阅读器
    XML PULL模型
    Android调用 Webservice报org.ksoap2.serialization.SoapPrimitive(转)
    Android调用Asp.net Web Service示例
    Eclipse编辑器基本设置
  • 原文地址:https://www.cnblogs.com/gaopeng527/p/4485448.html
Copyright © 2011-2022 走看看