简单的二分法排序

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


相关推荐

  • 试用最强Spark IDE–IDEA

    试用最强Spark IDE–IDEA

    2021年11月26日
  • Python中的numpy库介绍!

    Python中的numpy库介绍!机器学习算法中大部分都是调用Numpy库来完成基础数值计算的。安装方法:pip3installnumpy1.ndarray数组基础python中用列表保存一组值,可将列表当数组使用。另外,python中有array模块,但它不支持多维数组,无论是时列表还是array模块都没有科学运算函数,不适合做矩阵等科学计算。numpy没有使用python本身的数组机制,而是提供了ndarray…

    2022年7月20日
  • android studio报错Gradle project sync failed. Please fix your project and try again

    android studio报错Gradle project sync failed. Please fix your project and try againAndroidStudio导入项目或者新建项目想运行的时候可能会报错Gradleprojectsyncfailed.Pleasefixyourprojectandtryagain,原因应该是Gradle的一些东西没配好。这2个版本必须要保证本地有,而且一定要对得上。怎么知道本地有没有,下面2张图片展示他们各自的路径。(默认路径在安装AndroidS…

    2022年7月15日
  • html 修改下划线粗细,TextView设置内容下划线加粗等html样式实例及注意事项

    html 修改下划线粗细,TextView设置内容下划线加粗等html样式实例及注意事项TextView设置内容下划线加粗等html样式实例及注意事项效果图test01.pngJava代码packagecom.myapplication;importandroid.app.Activity;importandroid.os.Build;importandroid.os.Bundle;importandroid.text.Html;importandroid.text.Sp…

    2022年5月22日
  • 前端开发APP,从HBuilder开始~

    前端开发APP,从HBuilder开始~内容简介介绍目前前端人员开发app的几种方法,具体介绍hbuilder开发app,一扇赞新的大门~无所不能的js最开始js仅仅局限于网页上一些效果,操作网页内容等,但是nodejs把js带入了后端,也就是服务器端,从此前端人员可以涉及后端,前后通吃,native.js(以及其他js,稍候介绍)把js带入了移动端,从此前端人员前后移动通吃。前端涉及app的两种

    2022年5月31日
  • VC编程来操纵Office[通俗易懂]

    VC编程来操纵Office[通俗易懂]使用VC编程来操纵Office。你可以实现诸如:Word文件打印、传送数据到Word文档、发送E-MAIL、自动产生表格、Excel数据统计、圆饼图,直方图显示、自动报表生成、播放幻灯、doc,txt,HTML,rtf文件转换、中文简繁体转换、拼音或笔画排序……只要是Office能够实现的功能,都可以在你写的程序中调用。仔细阅读下面的说明,并下载源文件进行参考,你就可以一步一步地掌握这个技

    2022年6月16日

发表回复

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

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