java实现插入排序

简介: 有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法。
有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法。插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中。


插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。


代码实现:

/**
 * 插入排序
 * 
 * @param arr
 *            待排序数组
 */
public void insertSort(int[] arr) {
	int i, j;
	int n = arr.length;
	int target;

	// 假定第一个元素被放到了正确的位置上,这样,仅需遍历1至 n-1。
	for (i = 1; i < n; i++) {
		j = i;
		target = arr[i];

		while (j > 0 && target < arr[j - 1]) {
			arr[j] = arr[j - 1];
			j--;
		}

		arr[j] = target;
	}
}


相关文章
|
4月前
|
搜索推荐 Java 索引
|
6月前
|
算法 搜索推荐 Java
Java插入排序:优雅整理数据的艺术
Java插入排序:优雅整理数据的艺术
|
6月前
|
Java
插入排序(java)
插入排序(java)
|
7月前
|
算法 Java
<八大排序>万字详解(Java实现).插入排序、希尔排序、堆排序、快速排序、归并排序、计数排序...
<八大排序>万字详解(Java实现).插入排序、希尔排序、堆排序、快速排序、归并排序、计数排序
31 0
|
机器学习/深度学习 搜索推荐 算法
面试时常常考察的java排序算法--选择排序、冒泡排序、插入排序
面试时常常考察的java排序算法--选择排序、冒泡排序、插入排序
|
7月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--插入排序
数据结构与算法(Java篇)笔记--插入排序
|
7月前
|
搜索推荐 Java
Java实现插入排序算法
Java实现插入排序算法
31 0
|
7月前
|
搜索推荐 Java
Java代码插入排序
Java代码插入排序
31 0
|
7月前
|
Java Go C++
Golang每日一练(leetDay0116) 路径交叉、回文对
Golang每日一练(leetDay0116) 路径交叉、回文对
62 0
Golang每日一练(leetDay0116) 路径交叉、回文对
|
7月前
|
Java
LowB三人组--插入排序原理和java实现
LowB三人组--插入排序原理和java实现