简单的二分法排序

简单的二分法排序提起排序,记忆最深刻的就是冒泡法排序,因为这是程序员入门必学的第一个排序算法。但是冒泡法需要不断地遍历数组,不断地遍历数组,需要消耗更多的时间。相对于冒泡法,二分法排序的效率相对的更高一些。publicclassBisection{publicstaticvoidmain(String[]args){Integer[]a={74,81,…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

提起排序,记忆最深刻的就是冒泡法排序,因为这是程序员入门必学的第一个排序算法。

但是冒泡法需要不断地遍历数组,不断地遍历数组,需要消耗更多的时间。

相对于冒泡法,二分法排序的效率相对的更高一些。

public class Bisection {

    public static void main(String[] args) {

        Integer[] a= {74,81,47,77,48,3,40,34,15,67,4,31,41,54,98,27,84,37,75,38,24,72,9,45,77,43,11,2};
        a=new Bisection().order(a);
        for(int i=0;i<a.length;i++)
        {

            System.out.println(a[i]);
        }
    }
    
    public Integer[] order(Integer[] a) {

       //正序为true(默认),倒序为false
        return order(a,true);
    }
    
    
    public Integer[] order(Integer[] a,boolean b) {

        int min,max,middle=0,temp,length=a.length;
        for(int j=1;j<length;j++)
        {

            min=0;
            max=j-1;
            temp=a[j];
            while(min<=max) {

                middle=(min+max)/2;

                //b的作用:改变表达式的布尔值,从而控制排列顺序
                if(a[middle]<temp==b) {

                        min=middle+1;
                }else
                {

                        max=middle-1;
                }
            }
            
            for(int i=j;i>min;i–)
            {

                a[i]=a[i-1];
            }
            
            a[middle]=temp;
        }
        return a;
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234855.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 深度图像基础知识(一)

    深度图像基础知识(一)深度图像(depthimage)也被称为距离影像(rangeimage),是指将从图像采集器到场景中各点的距离(深度)作为像素值的图像,它直接反映了景物可见表面的几何形状。深度图像经过坐标转换可以计算为点云数据,有规则及必要信息的点云数据也可以反算为深度图像数据。深度数据流所提供的图像帧中,每一个像素点代表的是在深度感应器的视野中,该特定的(x,y)坐标处物体到离摄像头平面最近的

    2022年4月25日
    29
  • pycharm激活码2021【注册码】[通俗易懂]

    pycharm激活码2021【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    35
  • pytest fixtures_jig和fixture的区别

    pytest fixtures_jig和fixture的区别fixture的优势Pytest的fixture相对于传统的xUnit的setup/teardown函数做了显著的改进:命名方式灵活,不局限于setup和teardown这几个命名conf

    2022年7月31日
    5
  • 基于AX88796B的网络接口模块的设计与实现[通俗易懂]

    基于AX88796B的网络接口模块的设计与实现[通俗易懂] 基于AX88796B的网络接口模块的设计与实现[日期:2008-7-22]来源:今日电子/21IC 作者:重庆邮电大学崔巍[字体:大中小]  引言网络技术应用日益普及的今天,工业现场的仪器仪表、数据采集和控制设备也日趋网络化,工业自动化和网络的结合越来越密切。而将以太网和嵌入式系统相结合应用于工业控制中已成为趋势。AX8

    2022年6月10日
    30
  • 在flask中使用jsonify和json.dumps的区别

    在flask中使用jsonify和json.dumps的区别flask提供了jsonify函数供用户处理返回的序列化json数据,而python自带的json库中也有dumps方法可以序列化json对象,那么在flask的视图函数中return它们会有什么不同之处呢?想必开始很多人和我一样搞不清楚,只知道既然框架提供了方法就用,肯定不会错。但作为开发人员,我们需要弄清楚开发过程中各种实现方式的特点和区别,这样在我们面对不同的需求时才能做出相对合理的选择,而

    2022年5月24日
    31
  • vue中splice和$emit使用

    vue中splice和$emit使用splice函数用法splice(index,len,[item])它也可以用来替换/删除/添加数组内某一个或者几个值(该方法会改变原始数组)ndex:数组开始下标len: 替换/删除的长度item:替换的值,删除操作的话 item为空删除://删除起始下标为1,长度为1的一个值(len设置1,如果为0,则数组不变)var arr = [‘a’,…

    2022年6月13日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号