Java编程入门与应用 P192 例7-25——快速排序法(非完全书上,而是更具书上思想自编写)

news/2024/5/20 0:35:58 标签: 算法, java, 快速排序, 数据结构

Java编程入门与应用 P192 例7-25——快速排序法(非完全书上,而是更具书上思想自编写)

程序入口:

java">/**
 * Java编程入门与应用 P192 例7-25——快速排序法(非完全书上,而是更具书上思想自编写)
 */

public class quick_sort {
    //定义一个算法

    public static void main(String[] args) {
        //定义初始数组
        int[] number = {13, 15, 24, 99, 14, 11, 1, 2, 3};

        //排序前
        System.out.print("排序前:");
        for(int i : number){
            System.out.print(i + " ");
        }

        //使用用户定义的算法类中的快速排序
        algorithm.quickSort(number);

        //输出排序后的数组数据
        System.out.print("\n排序后:");
        for(int j : number){
            System.out.print(j + " ");
        }
    }
}

快速排序算法

java">public class algorithm {
    //快速排序方法
    public static void quickSort(int[] array) {
        //判断是否为空
        if (array.length > 0) {
            //需要排序的数组有值,则进行快速排序算法阶段
            quickSort_arithmetic(array, 0, array.length - 1);
        }
    }

    //快速排序算法的执行
    private static void quickSort_arithmetic(int[] array, int low, int height) {
        //递归需要个退出条件
        if (low < height) {
            //获取中间键
            int middle = get_quickSortMiddle(array, low, height);
            //将中轴左边的数据进行相同操作
            quickSort_arithmetic(array, low, middle - 1);
            //将中轴右边的数据进行相同的操作
            quickSort_arithmetic(array, middle + 1, height);
        }
    }

    //快速排序的获取中间键算法
    private static int get_quickSortMiddle(int[] array, int low, int height) {
        //设数组第一个数为中轴
        int temp = array[low];
        //持续判断中间键是否获取结束
        while (low < height) {
            //判断当前最大值应该在中轴的什么范围,如果当前值大于中轴
            while(low < height && array[height] >= temp){
                height--;
            }
            //要是当前值大于了中轴,交换位置
            exchange_value(array, low, height);


            //判断当前最小值应该在中轴的什么范围,如果当前值小于中轴
            while (low < height && array[low] <= temp) {
                low++;
            }

            //要是当前值小于了中轴,交换位置
            exchange_value(array, low, height);
        }

        //退出循环了表示当前low和height都指向了中轴,返回中轴
        return low;
    }

    //交换中轴两边的数据
    private static void exchange_value(int[] array, int low, int height) {
        //交换数据
        int temp = array[low];
        array[low] = array[height];
        array[height] = temp;
    }
}


结果:

java">排序前:13 15 24 99 14 11 1 2 3 
排序后:1 2 3 11 13 14 15 24 99 
进程已结束,退出代码为 0

感谢观看

再次感谢~


http://www.niftyadmin.cn/n/1542578.html

相关文章

数据库系统内部架构 (Architecture Of Database System)

大学时候有一门课叫做《数据库系统概论》&#xff0c;里面有些数据库系统的理论。比如关系数据库RDBMS&#xff0c;外模式&#xff0c;内模式&#xff0c;关系代数&#xff0c;SQL基础&#xff0c;视图&#xff0c;GRANT&#xff0c;数据字典等等。但到底数据库系统内部如何实现…

Java编程入门与应用 P194——例7-26——选择排序法

Java编程入门与应用 P194——例7-26——选择排序法 利用选择排序方法通过编程的方式实现对number数组进行排序&#xff0c;并输出已排序的元素 程序入口&#xff1a; /*** Java编程入门与应用 P194——例7-26——选择排序法** 利用选择排序方法通过编程的方式实现对number数…

2-1-搭建Linux实验环境-sshd服务搭建与管理与防治暴力破解-课堂笔记

1、学习Linux服务前期环境准备、搭建一个RHEL6环境注意&#xff1a;本章学习推荐大家用centos6.X 系列的系统&#xff0c;用RHEL也可以实验环境搭建&#xff1a;系统安装安装RHEL6或者centos 6系列 64位系统 不要用32位CENTOS6X86_64从6.5 -6.8 都可以下载地址&#xff1a;http…

notepad++ gmt中文乱码问题

notepad中运行GMT绘图&#xff0c;中文字体经常乱码&#xff0c; 主要是含中文文件的编码格式问题&#xff0c;用notepad新建的格式经常乱码&#xff0c;用系统自带的文档建就不会。 新建文档的格式是ansi&#xff0c;notepad一般是GB格式。 备忘&#xff1a;含中文的数据文件用…

Vue2+3入门到实战

作为IT技术相关行业不可或缺的岗位之一&#xff0c;前端开发工程师就业前途广阔&#xff0c;一直是很多同学心中转行的首选行业。但很多人还没开始&#xff0c;便被一系列问题难倒了&#xff0c;比如&#xff1a;前端该如何入门&#xff1f;路线图是怎样的&#xff1f;想要找到…

Java编程入门与应用 P195——例7-27——直接插入法

Java编程入门与应用 P195——例7-27——直接插入法 程序入口&#xff1a; /*** Java编程入门与应用 P195——例7-27——直接插入法*/public class algorithm {//判断数组是否为空public static void straightInsertionSort(int[] num) {if (num.length > 0) {StraightInse…

Java编程入门与应用 P196——高手带你做:实现商品信息查询功能

Java编程入门与应用 P196——高手带你做&#xff1a;实现商品信息查询功能 假设商品系统中&#xff0c;每件都有3个库存信息&#xff0c;分别是入库量、出库量、和当前库存量。定义一个一维数组来存储5建商品的名称&#xff0c;并定义一个二维数组来存储这5件商品的3个库存信息…

On having layout

这篇文章太好了&#xff0c;我就征得译文作者的同意转到此处。出处&#xff1a;http://old9.blogsome.com/2006/04/11/onhavinglayout译者注&#xff1a;一篇很好的文章&#xff0c;很久以前在blog上就推荐过&#xff0c;这两天断断续续花了点时间翻译了一下&#xff0c;推荐读…