插入排序
2015-11-01 12:34
405 查看
基本思想:
将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。
直接插入排序示例:
如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是稳定的。
算法实现:
所有的算法源代码都可以从我的在我的GitHub上面找到:https://github.com/ThinerZQ/AllAlgorithmInJava
将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。
直接插入排序示例:
如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是稳定的。
算法实现:
package com.zq.algorithm.sort; /** * Created by zhengshouzi on 2015/11/1. */ public class InsertSort { public static void main(String[] args) { int[] a={3,1,5,7,2,4,9,6}; insertSort(a); } public static void insertSort(int[] a){ for (int i = 1; i <a.length ; i++) { //每个元素和前一个比较,如果比较小,就往前插入到合适位置,假设第一个元素是有序的,那么经过1次插入后,前两个元素一定是有序的(在两个元素间局部有序)以此类推... if (a[i]<a[i-1]){ int j=i-1; int temp =a[i];//临时存储待插入元素 //当当前要插入的元素,比前一个元素小,往前移动,找到插入点,并将比较过的元素后移一位 while (j>=0&&temp<a[j]){ a[j+1]=a[j]; j--; } //开始插入 a[j+1]=temp; } } for (int i = 0; i <a.length ; i++) { System.out.print(" " + a[i]); } } }
所有的算法源代码都可以从我的在我的GitHub上面找到:https://github.com/ThinerZQ/AllAlgorithmInJava
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树