Java学习笔记排序算法----------插入排序
来源:互联网 发布:zepto.js 滑动 编辑:程序博客网 时间:2024/05/21 06:52
这是java学习笔记中排序算法的第二部分---------插入排序,插入排序的思想也很简单,可以理解为:待插入的元素下标为i那么则有前i-1个元素都已经排序结束了。在这里解决思路是:在给定原始数组的情况下,取第一个元素为起始元素,认为它是有序的,接下来取第二个元素,然后在已经有序的元素子序列中从后往前开始比较,如果有序子列中的元素大于待排序元素,则将待排序元素向前移动,直至出现有序子列中的某一元素小于等于待排序元素位置,这时候插入过程结束,插入排序也因此得名。
用一个简单的实例解释为:设有序子列为[1,2,4,7],接下来的待排序元素为3那么有:
7>3,则序列变为:[1,2,4,3,7]
4>3,则序列变为:[1,2,3,4,7]
2<3,则序列不在移动
程序如下:
//InsertSort.java
class InsertSort {public static void main(String[] args) {int[] num_list = {9,8,7,2,5,6,4,1,56,12,14,36,89,78,45};System.out.print("排序之前的数组为:" + "\n");print(num_list);insertSort(num_list);System.out.print("排序之后的数组为:" + "\n");print(num_list);System.out.println("排序之后降序输出列表为:" + "\n");reverseprint(num_list);}public static void print(int[] num_list) { for(int i = 0 ; i < num_list.length ; i ++ ) { System.out.print(num_list[i] + ","); } System.out.println(""); }public static void reverseprint(int[] numbers){ for(int i=numbers.length-1; i>=0; i--){ System.out.print(numbers[i] + ",");} System.out.print("");}public static void insertSort(int[] num_list) { int size = num_list.length;int a[] = new int[size];int temp;int j; for(int i = 0 ; i <= num_list.length-1 ; i ++ ){a[i] = num_list[i]; for(int j = i+1 ; j <= num_list.length ; j ++ ){ if(num_list[j-1]>num_list[j]){}}} for(int i=1; i<size; i++) { temp = num_list[i]; for(j = i; j > 0 && temp < num_list[j-1]; j--) num_list[j] = num_list[j-1]; num_list[j] = temp;System.out.print("第" + i + "轮" + "\n");print(num_list); } }}运行结果如下:运行结果如下:
排序之前的数组为:
9,8,7,2,5,6,4,1,56,12,14,36,89,78,45,
j为:0
第1轮
8,9,7,2,5,6,4,1,56,12,14,36,89,78,45,
j为:0
第2轮
7,8,9,2,5,6,4,1,56,12,14,36,89,78,45,
j为:0
第3轮
2,7,8,9,5,6,4,1,56,12,14,36,89,78,45,
j为:1
第4轮
2,5,7,8,9,6,4,1,56,12,14,36,89,78,45,
j为:2
第5轮
2,5,6,7,8,9,4,1,56,12,14,36,89,78,45,
j为:1
第6轮
2,4,5,6,7,8,9,1,56,12,14,36,89,78,45,
j为:0
第7轮
1,2,4,5,6,7,8,9,56,12,14,36,89,78,45,
j为:8
第8轮
1,2,4,5,6,7,8,9,56,12,14,36,89,78,45,
j为:8
第9轮
1,2,4,5,6,7,8,9,12,56,14,36,89,78,45,
j为:9
第10轮
1,2,4,5,6,7,8,9,12,14,56,36,89,78,45,
j为:10
第11轮
1,2,4,5,6,7,8,9,12,14,36,56,89,78,45,
j为:12
第12轮
1,2,4,5,6,7,8,9,12,14,36,56,89,78,45,
j为:12
第13轮
1,2,4,5,6,7,8,9,12,14,36,56,78,89,45,
j为:11
第14轮
1,2,4,5,6,7,8,9,12,14,36,45,56,78,89,
排序之后的数组为:
1,2,4,5,6,7,8,9,12,14,36,45,56,78,89,
排序之后降序输出列表为:
89,78,56,45,36,14,12,9,8,7,6,5,4,2,1,
很简单的一个程序,不过很有意思,继续努力!
- Java学习笔记排序算法----------插入排序
- 算法学习笔记----插入排序
- 算法学习笔记--插入排序
- [学习笔记]排序算法之插入排序
- 算法学习-----插入排序(Java)
- 算法学习笔记之插入排序算法
- 算法(第四版)学习笔记之java实现插入排序
- 插入排序算法笔记
- 插入排序算法笔记
- 算法学习笔记之插入排序
- 插入排序-算法导论学习笔记
- 插入排序-《算法导论》学习笔记一
- 算法学习笔记之插入排序
- java 排序算法---插入排序
- Java排序算法:插入排序
- Java算法-排序-插入排序
- 算法学习-插入排序
- Java学习笔记排序算法-------冒泡排序
- 微信小程序获取openid服务器端代码
- ubuntu下jdk环境配置
- 数据结构之队列
- DemoA1213
- Java基础知识和常用数据结构整理与分析--Framwork篇
- Java学习笔记排序算法----------插入排序
- 面试经验
- 蛙人高频交易拆单策略—带手续费拆单策略及原理说明
- 最长公共子串
- IP中的保留地址
- 源码分析-FutureTask
- TCP连接的状态详解以及故障排查
- Python学习---第5天---装饰器
- web学习笔记