java 基础排序(冒泡、插入、选择、快速)算法回顾

2023-05-16

java 基础排序(冒泡、插入、选择、快速)算法回顾

  • 冒泡排序
private static void bubbleSort(int[] array) {
        int temp;
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array.length - i - 1; j++) {
                if (array[j] > array[j + 1]) {
                    temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
        }

        print(array);
    }
  • 插入排序
private static void insertSort(int[] array) {
        int j;
        //从下标为1的元素开始选择合适的位置插入,因为下标为0的只有一个元素,默认是有序的
        for (int i = 1; i < array.length; i++) {
            int tmp = array[i];//记录要插入的数据
            j = i;
            //从已经排序的序列最右边的开始比较,找到比其小的数
            while (j > 0 && tmp < array[j - 1]) {
                //向后挪动
                array[j] = array[j - 1];
                j--;
            }
            //存在比其小的数,插入
            array[j] = tmp;
        }

        print(array);
    }
  • 选择排序
private static void choiseSort(int[] array) {
        //记录目前能找到的最小值元素的下标
        int min;
        //经过N-1轮比较
        for (int i = 0; i < array.length - 1; i++) {
            min = i;
            //每轮需要比较的次数
            for (int j = i + 1; j < array.length; j++) {
                if (array[j] < array[min]) {
                    min = j;
                }
            }

            //将找到的最小值和i位置所在的值进行交换
            if (i != min) {
                int temp = array[i];
                array[i] = array[min];
                array[min] = temp;
            }
        }

        print(array);
    }
  • 快速排序

快速排序算法思想

 /**
     * 快速排序
     *
     * @param array
     * @param left
     * @param right
     */
    private static void quickSort(int[] array, int left, int right) {
        if (left >= right) return;
        int pivot = partition(array, left, right);
        quickSort(array, left, pivot - 1);
        quickSort(array, pivot + 1, right);

    }

    /**
     * 数组划分
     *
     * @param array
     * @param left
     * @param right
     * @return
     */
    private static int partition(int[] array, int left, int right) {
        int pivotKey = array[left];
        while (left < right) {
            while (left < right && array[right] >= pivotKey) {
                right--;
            }
            array[left] = array[right];

            while (left < right && array[left] <= pivotKey) {
                left++;
            }
            array[right] = array[left];
        }
        array[left] = pivotKey;
        return left;
    }
  • 测试
private static void print(int[] array) {
        for (int i = 0; i < array.length; i++) {
            System.out.printf(array[i] + " ");
        }
    } 

 public static void main(String[] args) {
        int[] array = {4, 2, 8, 9, 5, 7, 6, 1, 3};
        System.out.println("原始数据:");
        print(array);
        System.out.println("\r\n");
        System.out.println("冒泡排序:");
        bubbleSort(array);
        System.out.println("\r\n");
        System.out.println("选择排序:");
        choiseSort(array);
        System.out.println("\r\n");
        System.out.println("插入排序:");
        insertSort(array);

         int array[] = {65, 58, 95, 10, 57, 62, 13, 106, 78, 23, 85};

        System.out.println("快速排序前:" + Arrays.toString(array));

        quickSort(array, 0, array.length - 1);

        System.out.println("快速排序后:" + Arrays.toString(array));
    }

转载于:https://www.cnblogs.com/lenovo_tiger_love/p/11596798.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 基础排序(冒泡、插入、选择、快速)算法回顾 的相关文章

随机推荐

  • Docker容器跨主机通信--overlay网络

    一 Docker主机间容器通信的解决方案 Docker网络驱动 Overlay 基于VXLAN封装实现Docker原生Overlay网络Macvlan Docker主机网卡接口逻辑上分为多个子接口 xff0c 每个子接口标识一个VLAN 容
  • intel和AMD CPU性能对比(2016年CPU天梯图)组装电脑必读!

    http www 365pcbuy com article 411 html 特别提示 xff1a 此文已经于2016年10月12日更新 xff01 内容变动较大 xff0c 请细细品鉴 xff01 如何为客户推荐高性价比机型是我站的重要工
  • SDN控制器-POX学习(一)

    本文实验环境 1 VirtualBox 2 SDN Hub tutorial VM 64bit 学习目标 1 熟悉SDN Hub tutorial 2 学习POX提供的样例代码 tutorial l2 hub py SDN Hub tuto
  • android 编译突然出错,错误原因 Could not resolve com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+....

    错误追根是因为微信支付依赖的错误 解决办法 xff1a 微信支付依赖版本 43 号改为微信支付依赖最新版本 在这里https bintray com wechat sdk team maven可以查看到wechat sdk的最新版本号 xf
  • 浏览器相关知识

    1 认识浏览器 浏览器是把在互联网上找到的文本文档翻译成网页 xff0c 网页包括图形 音频 视频和文本等 2 浏览器的主要功能 展示网页资源 xff0c 即请求服务器并将请求的结果显示在浏览器窗口中 资源的格式一般是HTML xff0c
  • linux vnc的默认端口修改

    linux vnc的默认端口修改 2014 02 08 20 01 28 分类 xff1a LINUX vnc的默认端口是5901 xff0c 这个说法是不对的 vnc并不是只有一个端口 以前另一个文章介绍了nvcserver的配置用户的过
  • redis配置

    1 Redis 3 2x配置文件详解 2 3 4 默认redis不是以后台进程的方式启动 xff0c 如果需要在后台运行 xff0c 需要将这个值设置成yes 5 以后台方式启动的时候 xff0c redis会写入默认的进程文件 var r
  • Cosmos OpenSSD架构分析--FSC

    接口速度 xff1a type bw read75 s1s 75 s 8k 1s 61 104m swrite 1300 s 1s 1300 s 8k 1s 61 6m serase3 8ms 1s 3 8ms 8k 256 1s 61 5
  • 单片机的栈

    导读 xff1a 在C语言的世界里 xff0c 栈的地位非常举足轻重 xff0c 许多错误都可能和栈设置有关 xff0c 那么该如何确定栈的大小 xff1f 今天分享一点栈知识 xff0c 帮助你确定栈的大小 xff0c 参考链接请点击下方
  • GPS数据接收 串口调试感受

    注册这个账户也有一段日子了 xff0c 不知不觉已经研2了 xff0c 时间过的好快 xff0c 研3的学长已经答辩完 xff0c 马上要离开学校去工作了 xff0c 在南京 xff0c 一份不错的工作 这学期已经过去一个月了 xff0c
  • 使用VNC访问Windows桌面

    1 背景介绍 两台电脑 xff0c 一个笔记本 xff0c 一个台式机 笔记本上装的是Windows 10 通过上网小助手上网 xff08 P S 上网小助手 Stupid Policy xff09 台式机上装的是Ubuntu 14 04L
  • Maven 与 IntelliJ IDEA 的完美结合<转>

    转载地址 xff1a http www open open com lib view open1388650391891 html 你是否正在学习Maven xff1f 是否因为Maven难用而又不得不用而苦恼 xff1f 是否对Eclip
  • Cannot install ubuntu or other linux flavours on citrix Xen server

    Citrix Xen sucks When u try to install linux stuff on its Xen servers u will get an error complaining errors like below
  • web网站css,js更新后客户浏览器缓存问题,需要刷新才能正常展示的解决办法

    问题描述 最近将公司官网样式进行了调整 xff0c 部署到服务器后访问发现页面展示不正常 xff0c 但是刷新之后就会展示正常 问题分析 研究之后发现可能的原因有 css文件过大 xff0c 加载缓慢本地缓存问题 xff0c 虽然服务器修改
  • 目标检测篇-FPN论文精读

    1 FPN网络结构 基于feature pyrimid来检测不同scale的object xff0c 共有4种思路 a 使用图像金字塔构建特征金字塔 在每个图像尺度上独立计算的 b 只使用单一尺度的特征 c 重用由卷积神经网络计算的金字塔特
  • VNC的安装和常用命令

    主要参考文章 xff1a http www cnblogs com coderzh archive 2008 07 16 1243990 html http os 51cto com art 201005 201136 all htm ht
  • Deepin debian安装Libreoffice

    Libreoffice LibreOffice 是一款功能强大的办公软件 xff0c 默认使用开放文档格式 OpenDocument Format ODF 并支持 docx xlsx pptx 等其他格式 它包含了 Writer Calc
  • 小波变换——哈尔小波,Haar

    哈尔小波转换是于1909年由Alfr d Haar所提出 xff0c 是小波变换 xff08 Wavelet transform xff09 中最简单的一种变换 xff0c 也是最早提出的小波变换 Alfr d Haar xff0c 188
  • 一个字节多少位

    前几天笔试发现这个问题有点模糊 xff0c 囧 xff0c 记录一下 xff1a 1字节 xff08 byte xff09 61 8位 xff08 bit xff09 在16位的系统中 xff08 比如8086微机 xff09 1字 xff
  • java 基础排序(冒泡、插入、选择、快速)算法回顾

    java 基础排序 xff08 冒泡 插入 选择 快速 xff09 算法回顾 冒泡排序 code private static void bubbleSort int array int temp for int i 61 0 i lt a