java sort 插入排序_Java排序之InsertionSort插入排序的实例
插入排序 の implementation
插入排序就像打赌的时候,比如双扣。抽牌的时候,一次拿一张牌,这张牌和之前的牌一张张比较。选择把这张牌插入什么位置,排好顺序的位置后打牌更顺。要不然得一个一个找到时麻烦。也不利于打牌的大局观。看下图
假设第一次抽到梅花7, 不用排序。因为只有一张
接着抽到梅花10
。因为10比7大,所以不用排序。
再接着抽卡。发现抽到了梅花5
。这个时候不要犹豫,2点真的不算大的。果断弃牌
接着我们拿 5 和 10 比较。 5 小于 10 所以交换位置。
拿5再和7比。 5 比 7 小。 所以交换 5 和 7 的位置 得到
。
这个时候就已经是sorted的了。 原理就是这样子。
因为比较简单。直接贴上代码// O(n^2) 最坏的情况
// 最好的情况 O(n)
public static void sort(Comparable[] a) {
for (int i = 1; i < a.length; i++) {
for (int j = i ; j > 0; j--) {
if (less(a[j], a[j - 1]))
exch(a, j, j - 1);
else
break;
}
}
}
public static void sort(Comparable[] a, int low, int hi) {
for (int i = low; i <= hi ; i++) {
for (int j = i ; j > low; j--) {
if (less(a[j], a[j - 1]))
exch(a, j, j - 1);
else
break;
}
}
}
InsertSort
性能分析
最坏的情况就是每次抽到的卡是最小的。这个时候每次都需要从尾部遍历到头部。时间是N ^ 2成正比
最好的情况就是已经排好序了。因为已经排好序了。所以每次抽到的牌都不需要排序。 时间是 N 成正比
java sort 插入排序_Java排序之InsertionSort插入排序的实例相关推荐
- java sort方法_Java排序方法sort用法详解
本文实例为大家分享了java对数组.集合的排序方法,供大家参考,具体内容如下 对数组的排序: //对数组排序 public void arraySort(){ int[] arr = {1,4,6,3 ...
- Java sort()与稳定排序
Java sort()与稳定排序 首先由博文 JAVA里sort()方法的使用与原理解析的结论如下: sort()是根据需要排序的数组的长度进行区分的: 首先先判断需要排序的数据量是否大于60. 小于 ...
- java堆排序工具包_JAVA 排序工具类
提供了以下排序:冒泡排序 选择排序 插入排序 希尔排序 快速排序 归并排序 桶排序 堆排序 package com.xingej.algorithm.sort;import java.util.Arr ...
- java打开浏览器_Java调用浏览器打开网页完整实例
这篇文章主要介绍了Java调用浏览器打开网页的方法,以完整实例形式分析了java打开网页的相关技巧,需要的朋友可以参考下 本文实例讲述了Java调用浏览器打开网页的方法.分享给大家供大家参考.具体实现 ...
- java sort类_JAVA Collections工具类sort()排序方法
主要分析内容: 一.Collections工具类两种sort()方法 二.示例 一.Collections工具类两种sort()方法 格式一: public static > void sort ...
- java 比较算法_JAVA排序算法实现和比较:冒泡,桶,选择,快排,归并
一.冒泡排序: 实现思想: 重复地走访过要排序的元素列,一次比较两个相邻的元素,如果他们的顺序(如从大到小.首字母从A到Z)错误就把他们交换过来.走访元素的工作是重复地进行直到没有相邻元素需要交换,也 ...
- java sort类_java中sort()方法的用法
在java.util.Collections类中有个sort()方法,主要是用来给数组排序,排序的规则可以自己重写. (一)给数组{2,3,1,5}按自小到大排序 public class Main{ ...
- java排列序数_JAVA排序数字字母混合
展开全部 import java.util.ArrayList; import java.util.List; public class Sort { /** * @param args */ pub ...
- java快拍_Java排序之快排
基本实现思路: 从数列中挑出一个元素,称为 "基准" 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边).在这个分割之后, ...
最新文章
- FPGA 中 IO 口时序分析(Input Delay /output Delay)
- 2983:谁是你的潜在朋友
- Nagios配置文件上传
- 算法一之简单选择排序
- for循环中的参数能不省略
- STM32学习——半天学完正点原子入门篇例程,STM32:学会了吗?我:学废了✨
- PDF版建筑地面工程施工质量验收规范GB50209-2010附条文说明
- 闪迪u盘量产工具万能版_加密保护,更高性能!闪迪酷奂CZ74 U盘新品果然够惊艳...
- html select文字居中显示,用CSS将select/option文本居中
- Power oj 2837: 剑道万古如长夜(单调队列优化DP)
- oracle查询一小时内数据,ORACLE 查询近一天, 近半小时内的数据
- 京东数据分析工程师(实习生)笔试
- 阿里云ECS CentOS 7 安装图形化桌面
- Pulling 1 repository Exception caught during execution of merge command
- iOS 仿钉钉文字水印
- JS实现保存当前页面
- AJAX_入门经典案例
- 2023 易语言 MuX云切片转码系统前端源码
- 再过半小时,你就能明白kafka的工作原理了
- 曝滴滴外卖于4月1日上线;联想回应摩托罗拉手机裁员;苹果拟推廉价版iPhone X丨价值早报
热门文章
- 生成黑白棋盘标定图和单目相机标定(一)(python+opencv实现)
- 把自己这一年里的目标写在一张纸上---莱昂纳多·瑞兹曼
- yum配置文件 重启后还原_yum源配置的三种方法
- absolute 绝对定位水平居中问题
- 江苏省农村信用社联合社同城灾备方案及同城灾备网络系统招标公告
- DBeaver Enterprise Edition 22.0 企业版
- 如何减少喝酒对身体的伤害?
- android zxing简书,Android集成zxing 版本3.4.1
- C# 事务之SqlTransaction
- 三星android webview,三星手机webview问题