java-数组排序--插入排序
插入排序
想象着你的左手拿着一手好牌[1,1,1,2,6,6,6,9,9],此时你从桌面上又抽出一张牌[1],你将抽出的牌,从又往左,依次与左手的牌进行比较(只以数字进行对比),当抽出的牌第一次不再大于手中的牌,你将抽出的牌插入此牌的相邻右边,入[1,1,1,1,2,6,6,6,9,9],绿色为从右往左第一个抽出牌不再大的牌,红色为抽出的牌,这样你就回发现,虽然左手中的牌不断增加,但都将持续保持有序状态
插入排序同上方抽牌的例子相似,她将一个待排序数列分为左右两部分,并令左半部分为有序,右半部分为无序,每次从无序数列中取出一个数(无序部分最左端的一个数),并将其插入到有序数列中的合适位置(待排序数从右往左比较有序部分的元素,直到待排序数遇到第一个她不再大于的元素,此时待排序数将安置在此元素的右方),最开始,对于有序部分,其元素个数为0个,并在新元素的插入下不断增多,直到整个待排序数列有序
插入排序 - 方式一
方法将待排序数持续向左移动,直到待排序数不再大于前一个数
见图
上代码
1 public static void insertSort(int[] arr) { 2 3 for (int i = 0; i < arr.length; i++) { 4 for (int j = i; j > 0; j--) { 5 if(arr[j]<arr[j-1]) { 6 int tmp=arr[j]; 7 arr[j]=arr[j-1]; 8 arr[j-1]=tmp; 9 } 10 } 11 } 12 }
测试
public static void main(String[] args) {Sort.insertSort(new int[] {6,10,6,8,6,8,12,15,9,6,7});}
插入排序 - 方式二
思想与上面的相同,只是方法避免了重复多次的相邻数据的交换,只在最后一步将待排序树插入到合适位置
上图
上代码
1 public static void insertSort(int[] arr) { 2 3 for (int i = 0; i < arr.length; i++) { 4 int j = i; 5 int tmp=arr[i]; 6 for (; j > 0 && tmp<arr[j-1]; j--) { 7 arr[j]=arr[j-1]; 8 } 9 arr[j]=tmp; 10 } 11 }
测试
public static void main(String[] args) {Sort.insertSort(new int[] {6,10,6,8,6,8,12,15,9,6,7});}
如果有地方写的错误,或者有什么疑问与建议,欢迎大家提出来 愿与大家一同进步
转载于:https://www.cnblogs.com/wangbingc/p/10173098.html
java-数组排序--插入排序相关推荐
- java数组排序法方法_JAVA数组中五种常见排序方法
前言: 几种常用的JAVA数组排序方法的整合. 法一:Arrays.sort() Arrays.sort()排序方法在java中是最简单且最常用的排序方法 int []arr1= {45,34,59, ...
- java中插入排序_Java中的插入排序
java中插入排序 Today we will look into the Insertion Sort Java program. Insertion sort is similar to Bubb ...
- JAVA 实现插入排序
JAVA 实现插入排序 代码示例: import java.util.Arrays;public class wdnmd {public static void main(String[] args) ...
- Java插空排序,Java直接插入排序法详解
前面给大家介绍过了冒泡排序法.选择排序法等等,下面就来给大家讲一下java直接插入排序法,一起通过文章来进行了解吧. 来看一下基本思想: 将n个有序数存放在数组a中,要插入的数为x,首先确定x插在数组 ...
- java数组排序的几种方法
因为看书看到了java数组排序,所以将常用的几种排序方法写下来,仅供参考. (1)用sort排序(从小到大) int[] arr = {5,2,66,3,7}; Arrays.sort(arr);// ...
- java 数组排序论文_Java 7是否对方法Arrays.Sort使用Tim Sort?
是! ...也没有 摘要 在当前的Open JDK 0实现中,Tim Sort通常用于对对象数组(即byte和好友)进行排序-但是对于基本数组(byte方法的其余部分)使用了多种其他方法. 对于基元, ...
- java 数组排序论文_Java中运用数组的四种排序方法
标签: <1>利用Arrays带有的排序方法快速排序 import java.util.Arrays; 2 public class Test2{ public static void m ...
- Java实现插入排序及其优化 insertion sort
本文带来八大排序算法之插入排序. 插入排序(Insertion Sort)属于内部排序算法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的. 插入排序基本思想: 把n个待排序的元 ...
- Java数组排序解码
排序是我们在计算机科学中学习的第一个算法. 排序是一个非常有趣的领域,它有大约20多种算法,而且总是很难确定哪种算法最好. 排序算法的效率是根据所需的时间和所需的空间来衡量的. 一些时间气泡排序是最好 ...
- Java 数组排序及元素查找
对Java数组进行排序输出并查找任意元素所在位置下表索引值. 我们使用sort()方法对Java数组进行排序,使用binarySearch()方法来查找数组中的任意一个元素,定义一个printArra ...
最新文章
- Cent6.5 64位yum安装mysql5.5
- webpack 配置详解
- Firefox搜索框:自动出现添加搜索的提示
- js match()方法
- mongoose数据查询or、and、where等用法
- 英语总结系列(二十四):历经GCT的一月
- Android/Java面试题,边面试边成长,为了应试而应试
- python微信库wxpy无法登录_使用wxpy这个基于python实现的微信工具库的一些常见问题...
- virtualbox 中,虚拟机网络使用NAT方式时,其它机器对虚拟机的访问
- 2021-09-06Cross-product transformation
- TCP Reassembly
- oracle恢复误删除数据/数据回滚
- C语言二维数组传参问题
- oracle读取数据方式,关于oracle数据库读取数据的三种方式
- 学Python该看什么书?所有方向的精华好书推荐,18年老程序员倾囊相授!
- VMware下CentOS7最小化安装及配置
- 高效复制文件的DOS命令Robocopy
- TYPE-C接口引脚详解
- 游戏背景音乐与音效存在于游戏中有什么特殊的意义?
- 众安实业持续看好萤石矿产资源,新能源产业发展前景