简单的二分法排序

简单的二分法排序提起排序,记忆最深刻的就是冒泡法排序,因为这是程序员入门必学的第一个排序算法。但是冒泡法需要不断地遍历数组,不断地遍历数组,需要消耗更多的时间。相对于冒泡法,二分法排序的效率相对的更高一些。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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • apk伪造签名_如何反编译app

    apk伪造签名_如何反编译app反编译apk过程反编译目的需要的环境和工具工具环境反编译流程apktool解包导出apk的源代码修改Smali代码无法选中文本框添加开机自启Smali源码Java源码apktool打包apk签名模拟器安装apk验证apk反编译目的反编译apk:1  对apk应用进行激活成功教程并重新打包,反编译就是逆向的过程。  Androidapk是用高级语言源代码,通常是Java,对apk的逆向智能转换成汇编语言,即Smali。  这次反编译的目的是为了学习apk的软件安全,了解apk的编译过程。现有一个apk的

    2025年12月2日
    15
  • linux sftp和ftp的区别在哪?

    linux sftp和ftp的区别在哪?sftp和ftp

    2025年8月12日
    3
  • 如何找到spring的官方文档[通俗易懂]

    如何找到spring的官方文档[通俗易懂]最近因为项目中遇到了一些问题,百度不到比较好的方案,就准备去看下spring的官方文档,在此记录下:1.进入springframework的官网项目页面:https://spring.io/projects/spring-framework2.点击文档,进入文档的htmlsingle模式页面,复制浏览器的地址如下图:3.地址栏的地址”https://d…

    2025年9月16日
    6
  • Java开发手册之OOP规约

    Java开发手册之OOP规约Java开发手册之OOP规约

    2022年4月22日
    47
  • Android截图命令screencap[通俗易懂]

    查看帮助命令bixiaopeng@bixiaopeng~$adbshellscreencap-vscreencap:invalidoption–vusage:screencap[-hp][-ddisplay-id][FILENAME]-h:thismessage-p:savethefileasapng.-d:speci

    2022年4月13日
    174
  • 软件定义网络(SDN)基础概念学习笔记(下)

    软件定义网络(SDN)基础概念学习笔记(下)第四章1.南向接口协议设计目标/主要任务承上启下,分离控制平面与数据平面实现网络配置与管理实现路径计算,包括网络开销、链路状态等已实现的南向接口协议Openflow:Openflow交换机与控制器的信息交互OF-Config:Openflow交换机的配置和管理NETCONF:网络设备的配置与管理OVSDB:OpenvSwitch的配置与管理XMPP:用于即时通讯(O…

    2025年9月5日
    6

发表回复

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

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