Java实现的冒泡排序、二分查找算法

声明:本文纯属个人随手笔记,如果对您有参考价值我十分开心,如果有存在错误,或者有更好的解决办法也麻烦您留言告诉我,大家共同成长,切勿恶言相。 欢迎加入资源共享QQ群:275343679,一起发现知识、了解知识、学习知识、分享知识。网站:www.itlantian.top 

=======================================================================

 

冒泡排序

     比较相邻的元素。如果第一个比第二个大,就交换他们两个。

     对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

     针对所有的元素重复以上的步骤,除了最后一个。

     持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

        int[] numArray={1,3,2,4,5};

        for(int x=0;x<numArray.length-1;x++){

            for(int y=0;y<numArray.length-1-x;y++){

                if(numArray[y]<numArray[y+1]){
                    int  temp=numArray[y+1];
                    numArray[y+1]=numArray[y];
                    numArray[y]=temp;
                }

            }

        }

二分查找算法 (又称:折半查找)

优点:循环比较次数少、查找速度快、平均性能好

缺点:被查询表必须是有序表,且插入删除困难,适用于不经常变动而查找频繁的有序列表


算法描述:它的基本思想是,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。如 果x<a[n/2],则我们只要在数组a的左半部继续搜索x(这里假设数组元素呈升序排列)。如果x>a[n/2],则我们只要在数组a的右 半部继续搜索x, 在最坏的情况下用 O(log n)

 

/**
     * 二分查找
     * @param numArray 有序数组  例如:int[] numArray={1,2,3,4,5};
     * @param num 需要查询的元素  例如:num=4
     * @return
     */
    public static int  getBinarySearchIndex(int[] numArray,int num){

        int low=0,hight=numArray.length-1;

        while(low<=hight){

            int mid =(hight+low)/2;
            
            if(numArray[mid] == num ){
                return mid;
            }else if(numArray[mid]>num){
                hight=mid-1;
            }else{
                low=mid+1;
            }

        }

        return -1;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值