直接插入排序学习
来源:互联网 发布:13.3英寸笔记本知乎 编辑:程序博客网 时间:2024/04/27 08:30
直接插入排序:
1、从未排序的第一个元素开始,和前一个已排好序的元素相比较,如果小于前一个元素就交换位置,并继续与前一个元素比较,大于则跳出当前这一层的循环,这样当前元素与原来已排好序的元素,组成一个新的已经排好序的序列;(原数组包含(0~i)已排好序的序列与(i~lenght-1)未排好序的序列),(第一个元素可以看成是已排好序的序列,从第二个元素起算第一个未排好序的序列首元素);
2、循环重复上述操作,直到数组全都排好序;
代码如下:
public class InsertionSort {
private static int num = 0;//循环次数
public int[] sort(int[] forSort){
for(int i=1; i<forSort.length; i++){
for(int j=i;j>0;j--){
num++;
if(forSort[j]<forSort[j-1]){
int temp = forSort[j-1];
forSort[j-1] = forSort[j];
forSort[j] = temp;
}else{
break;
}
}
System.out.println("分次结果:"+Arrays.toString(forSort)+",num="+num);
}
return forSort;
}
public static void main(String[] args) {
int[] array = {2,5,6,8,5,4,6,9,4,9};
InsertionSort insertSort = new InsertionSort();
array = insertSort.sort(array);
System.out.println("最终结果:"+Arrays.toString(array)+",num="+num);
}
}
执行结果如下:
分次结果:[2, 5, 6, 8, 5, 4, 6, 9, 4, 9],num=1
分次结果:[2, 5, 6, 8, 5, 4, 6, 9, 4, 9],num=2
分次结果:[2, 5, 6, 8, 5, 4, 6, 9, 4, 9],num=3
分次结果:[2, 5, 5, 6, 8, 4, 6, 9, 4, 9],num=6
分次结果:[2, 4, 5, 5, 6, 8, 6, 9, 4, 9],num=11
分次结果:[2, 4, 5, 5, 6, 6, 8, 9, 4, 9],num=13
分次结果:[2, 4, 5, 5, 6, 6, 8, 9, 4, 9],num=14
分次结果:[2, 4, 4, 5, 5, 6, 6, 8, 9, 9],num=21
分次结果:[2, 4, 4, 5, 5, 6, 6, 8, 9, 9],num=22
最终结果:[2, 4, 4, 5, 5, 6, 6, 8, 9, 9],num=22
- 直接插入排序学习
- 直接插入排序--学习(三)
- 排序之直接插入排序学习笔记
- 排序算法学习-直接插入排序
- 插入排序--直接插入
- 插入排序------直接插入
- 插入排序---直接插入
- Java学习-插入排序1-直接插入排序
- 学习算法手记【原】- 直接插入排序
- java学习之直接插入排序
- JAVA 学习算法之直接插入排序
- 学习回顾算法(直接插入排序)
- 排序:直接插入排序
- 排序---直接插入排序
- 排序 -- 直接插入排序
- 排序---直接插入排序
- 排序--直接插入排序
- 排序-直接插入排序
- 常见的异步实现方法以及ES7中如何通过async实现异步操作
- C++第4次作业
- java并发包:几个多线程控制工具类
- Django项目开发举例之用户界面视图模版(5)
- DAU 统计,日活跃用户数 (DAU) 是衡量一个产品表现的重要指标。 需要编写程序,根据给定的某一天的 N 条访问记录,对当天的用户总数 M 进行统计。
- 直接插入排序学习
- C++第四次作业-分数的累加
- spring基于注解的普通类怎么调用@Services注解的service方法
- ubuntu系统下,搭建Android开发环境!!
- Spark性能优化指南
- 运维学习16
- 临时测试php又不想搭建vhost就用它把 php内置的web服务器
- Orange
- Lintcode 落单的数 II