冒泡排序、快排实现

排序实现

1.可调用Arrays.sort方法实现

public class Demo3 {public static void main(String[] args) {int []arr={3,5,2,1,4};Arrays.sort(arr);//可调用Arrays.toString方法打印数组System.out.println(Arrays.toString(arr));}
}打印结果:
-------------------------------------------------
[1, 2, 3, 4, 5]

2.冒泡排序代码实现【用于面试】

public class Demo3 {public static void main(String[] args) {int []arr={3,5,2,1,4};int[] arr1 = bubbleSort(arr);System.out.println(Arrays.toString(arr1));}public static int [] bubbleSort(int[] arr) {//i表示循环次数for (int i = 0; i < arr.length-1; i++) {//每循环一次则找到最大的值放在最右边,则比较的元素需要-ifor (int j = 0; j < arr.length-1-i; j++) {//相邻的元素比较,左边大于右边则交互位置if (arr[j] > arr[j+1]) {int temp =arr[j];arr[j]= arr[j+1];arr[j+1]=temp;}}}return arr;}
}打印结果:
-------------------------------------------------
[1, 2, 3, 4, 5]

3.sort底层代码快排实现

//快排
public class Demo4 {public static void main(String[] args) {int[] arr = {6, 1, 2, 7, 9, 3, 4, 5, 10, 8};//arr为目标数组。left:排序的开始索引 right:排序的结束索引//范围包括left和rightquiteSort(arr, 0, arr.length - 1);//增强for遍历for (int i : arr) {System.out.print(i + " ");}System.out.println();}private static void quiteSort(int[] arr, int left, int right) {//定义递归出口if (left > right) {return;}//定义初始位置int left0 = left;//用于递归使用int right0 = right;//计算出基准数int baseNumber = arr[left0];while (left != right) {//1.从右开始找比基准数小的(不包含相等)while (arr[right] >= baseNumber && right > left) {right--;}//2.从左开始找比基数大的(不包含相等)while (arr[left] <= baseNumber && left < right) {left++;}//3.当右边有比基准数小的数时停下//当左边有比基准数大的数停下// 交换两个值的位置int temp = arr[left];arr[left] = arr[right];arr[right] = temp;}//循环完成后,基准数归位//则比基准数大的都在右边,小的在左边//把right位置的元素放在left0位置arr[left0] = arr[right];//基准数放在right位置arr[right] = baseNumber;//6元素左边的数组排序,left0为基准数的最开始索引、//此处left0为0,right为6quiteSort(arr, left0, right - 1);//6元素右边的数组排序quiteSort(arr, right + 1, right0);}
}打印结果:
-------------------------------------------------
1 2 3 4 5 6 7 8 9 10 

注:为什么要从右边开始?
【left在大于基准数的地方停下,right在小于基准数的地方停下,如果left先走,那么左边一轮后指向的位置一定大于基准数,右边再开始一轮的话,那么最终停下来的地方一定在left处,而left指向的位置比自己大,交换就一定会出错】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/330881.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ElasticJob-分布式作业调度神器,你们还在用Quartz吗

转载自 ElasticJob&#xff0d;分布式作业调度神器&#xff0c;你们还在用Quartz吗&#xff1f;&#xff01; 简介 Elastic-Job是一个分布式调度解决方案&#xff0c;由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。 Elastic-Job-Lite定位为轻量级无中心化解…

分类器评估参数——准确度和精度的区别(足球荔枝)

refer to http://www.mathsisfun.com/accuracy-precision.html 准确率accuracy 和 精度precision 的不同&#xff1a; &#xff08;1&#xff09;Accuracy is how close a measured value is to the actual (true) value. 准确率是测量值与实际&#xff08;真&#xff09;值的…

JDK7的日期时间类

JDK7的日期时间类 Date类 1.概念 Date类表示时间&#xff0c;时间可以精确到毫秒。创建一个Date对象&#xff0c;其实就表示时间的对象 2.构造方法和成员方法 public class Demo1 {public static void main(String[] args) {//空参构造(将系统当前时间封装为时间对象[毫秒值…

Java 10的10个新特性,将彻底改变你写代码的方式

转载自 Java 10的10个新特性&#xff0c;将彻底改变你写代码的方式 Java 9才发布几个月&#xff0c;很多玩意都没整明白&#xff0c;现在Java 10又要来了。。 这时候我真尼玛想说&#xff1a;线上用的JDK 7 甚至JDK 6&#xff0c;JDK 8 还没用熟&#xff0c;JDK 9 才发布不久不…

如何评估模型的预测性能?

you can refer to 如何评估模型的预测性能&#xff1f; 一、模型评估简介 http://www2.mccombs.utexas.edu/faculty/Maytal.Saar-Tsechansky/Teaching/MIS_373/Fall2004/Model Evaluation.ppt 二、评估数据 用于模型评估的数据和用于模型训练的数据最好是两套&#xff0c;否则用…

JDK8的日期时间类1

localDateTime类 1.分类 将时间分成 localDate类【年月日]】 localTime类【时分秒】 localDateTime类【年月日时分秒】 2.localDateTime类【常用】 &#xff08;1&#xff09;构造方法 public class Demo1 {public static void main(String[] args) {//localDateTime[天时分…

Spring Boot 2.0 正式发布

转载自 重磅&#xff1a;Spring Boot 2.0 正式发布&#xff01; Spring Boot 2.0 正式发布&#xff01; 2018/03/01最新消息&#xff0c;传得沸沸扬扬的Spring Boot 2.0 正式发布了。 小编去看了下Spring Boot的官网&#xff0c;正式版本已经释放出来了&#xff01;&#xff01…

LNCS用户写作指南【 Springer Computer Science Proceedings 】

转自&#xff1a; http://blog.csdn.net/wyskys/article/details/18075471 重点是文末的参考文献格式&#xff08;主要的是 链接&#xff0c; 期刊论文&#xff0c;会议论文的引用格式&#xff09; 下載地址 &#xff1a;http://static.springer.com/sgw/documents/1121537/a…

JDK8的日期时间类2

1.localDateTime类格式化和解析 概念 &#xff08;1&#xff09;格式化:把localDateTime对象转换为String,需通过DateTimeFormatter对象指定格式 &#xff08;2&#xff09;解析:把String转换为localDateTime对象,需通过DateTimeFormatter对象指定格式 注&#xff1a;localDat…

44个Java代码性能优化总结

转载自 44个Java代码性能优化总结代码优化的最重要的作用应该是&#xff1a;避免未知的错误。在代码上线运行的过程中&#xff0c;往往会出现很多我们意想不到的错误&#xff0c;因为线上环境和开发环境是非常不同的&#xff0c;错误定位到最后往往是一个非常小的原因。然而为了…

JDK8的日期时间类3

计算两个时间的间隔 方法&#xff1a;between【静态方法】 1.获取相隔的年月日用Period调用&#xff0c;参数用LocalDate类对象封装的时间 2.获取相隔的天年月日用Duration调用&#xff0c;参数用LocalDateTime类对象封装的时间 //计算两个时间的间隔 public class Demo7 {pu…

分类算法中常用的评价指标

转自&#xff1a; 分类算法中常用的评价指标 来自网络&#xff0c;备份勿忘&#xff01; 对于分类器&#xff08;分类算法&#xff09;&#xff0c;评价指标主要有&#xff1a;1&#xff09;Precision&#xff1b;2&#xff09;Recall&#xff1b;3&#xff09;F-score;4)Accur…

Java 9 中的9个新特性

转载自 强悍&#xff01;Java 9 中的9个新特性 你可能已经听说过 Java 9 的模块系统&#xff0c;但是这个新版本还有许多其它的更新。 这里有九个令人兴奋的新功能将与 Java 9 一起发布。 Java 平台级模块系统 Java 9 的定义功能是一套全新的模块系统。当代码库越来越大&#…

处理可能发生的异常

什么是异常? 异常指的时程序在【编译】和【运行时】的一些不正常的状况。 Java的工程师其实早就想到可能会出现这些问题&#xff0c;他们把常见的问题写成类。 当我们出现这些异常时&#xff0c;可以根据API中去查找这些异常产生的原因。 ArrayIndexOutOfBoundsException: 数组…

如何评价分类模型性能?(足球荔枝)

【1】评价分类模型&#xff0c;我们一般从两个点出发 1.通过指标来评估该模型是否适合对预测对象&#xff1f; 评价指标主要有&#xff1a;1&#xff09;Precision&#xff1b;2&#xff09;Recall&#xff1b;3&#xff09;F-score;4)Accuracy;5)ROC;6)AUC[1] 2.通过计算预测…

区块链在阿里巴巴天猫中的应用

转载自 双11&#xff1a;区块链在阿里巴巴天猫中的应用 背景 天猫国际正在全面启动全球溯源计划——将利用区块链技术、药监码技术以及大数据跟踪进口商品全链路&#xff0c;汇集生产、运输、通关、报检、第三方检验等信息&#xff0c;给每个跨境进口商品打上“身份证”。这项…

这七种回归分析技术,学了不后悔

转自&#xff1a; http://dataunion.org/20514.html 什么是回归分析&#xff1f; 回归分析是一种预测性的建模技术&#xff0c;它研究的是因变量&#xff08;目标&#xff09;和自变量&#xff08;预测器&#xff09;之间的关系。这种技术通常用于预测分析&#xff0c;时间序列…

单双列集合总述

Collection[单列集合]接口 有List 和 Set子接口 和Map接口[双列集合]并列 **1.**List接口 实现类:ArrayList 和 LinkedList &#xff1b;特点:有序,可重复,有对索引的增删改查相对操作的方法 a.ArrayList:底层为数组 查询快[根据地址和索引查找],增删慢 b.LinkedList:底层为链…

Java正确获取客户端真实IP方法整理

转载自 干货&#xff1a;Java正确获取客户端真实IP方法整理在JSP里&#xff0c;获取客户端的IP地址的方法是&#xff1a;request.getRemoteAddr()&#xff0c;这种方法在大部分情况下都是有效的。但是在通过了Apache&#xff0c;Squid等反向代理软件就不能获取到客户端的真实IP…

机器学习性能评估指标(综合性总结)

转自&#xff1a;http://charleshm.github.io/2016/03/Model-Performance/ 分类 混淆矩阵1 True Positive(真正, TP)&#xff1a;将正类预测为正类数.True Negative(真负 , TN)&#xff1a;将负类预测为负类数.False Positive(假正, FP)&#xff1a;将负类预测为正类数 → 误报…