十大排序算法-------【插入排序】详解(Java源码)
插入排序的算法描述是一种简单直观的排序算法。它的工作原理就是通过构件有序的序列,对于未排序的数据,在已排序中从后向前扫描,找到相应的位置并插入。
- 算法描述:
- 一般来说插入拍摄都是采用in-place在数组上实现的。具体算法描述如下:
- 从第一个元素开始,该元素可以认为已经被排序;
- 拿到下一个元素,在已经排序的元素序列中从后向前扫描;
- 如果该元素(已经排序的序列元素)大于新元素,将该元素移动到下一个位置;
- 重复iii步骤,直到找到已排序的元素小于或者等于新元素的位置
- 将新元素插入到该位置之后
- 重复ii~v步骤
- 一般来说插入拍摄都是采用in-place在数组上实现的。具体算法描述如下:
- 代码实现
/**
* 插入排序
* <p>
* Title: charu
* </p>
* <p>
* Description:
* </p>
*
* @param intArray
*/
private static void charu(int[] intArray) {
for (int i = 1; i < intArray.length; i++) {
for (int j = i; j > 0; j--) {
if (intArray[j - 1] > intArray[j]) {
int emp = intArray[j];
intArray[j] = intArray[j - 1];
intArray[j - 1] = emp;
}else {
j = 0;
}
}
}
}
- 算法分析:
插入排序在实现上,通常采用的in-place排序(即只需要使用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。其本质类似交换排序(因为排序序列为数组,不是链表,需一一挪位),依次向前排序好的序列比较,只要出现比他大的元素就停止比较,