算法笔记--直接插入排序

简介: 直接插入排序是插入排序的一种,算法简单,适用于数据量小的情况。 1. 算法思想           每次从待排序序列中取出一个元素k,插入到已经排好序的序列A[0...i]中合适的位置。插入时k依次由后向前比较,小于k的元素后移。

直接插入排序是插入排序的一种,算法简单,适用于数据量小的情况。


1. 算法思想

          每次从待排序序列中取出一个元素k,插入到已经排好序的序列A[0...i]中合适的位置。插入时k依次由后向前比较,小于k的元素后移。

2. 时间复杂度

          最好情况 O(n):序列正序有序,只需比较n次,不需移动元素

          最坏情况 O(n^2):序列逆序有序,每次插入一个元素均需移动前面的所有元素

3. 空间复杂度 O(1)

          就地排序,辅助空间为常数级

4. 稳定性

          稳定。将k插入到第一个不大于k的元素之后,不改变同值元素的顺序

5. 代码实现(C语言)

void InsertSort(int *A, int n)
{
	int i, j;
	int tmp;

	for (i = 1; i < n; ++i)
	{
		j = i;
		tmp = A[j];

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


目录
相关文章
|
1月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--希尔排序
数据结构与算法(Java篇)笔记--希尔排序
|
1月前
|
机器学习/深度学习 存储 算法
【算法沉淀】刷题笔记:并查集 带权并查集+实战讲解
【算法沉淀】刷题笔记:并查集 带权并查集+实战讲解
|
13天前
|
人工智能 搜索推荐 Shell
【排序算法】插入排序与希尔排序,你不想知道为什么希尔比插入更快吗?
【排序算法】插入排序与希尔排序,你不想知道为什么希尔比插入更快吗?
|
15天前
|
搜索推荐 算法 Shell
【数据结构与算法】直接插入排序和希尔排序
【数据结构与算法】直接插入排序和希尔排序
|
17天前
|
机器学习/深度学习 搜索推荐 算法
【排序算法】插入排序与选择排序详解
【排序算法】插入排序与选择排序详解
|
1月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--快速排序
数据结构与算法(Java篇)笔记--快速排序
|
1月前
|
机器学习/深度学习 算法 搜索推荐
数据结构与算法(Java篇)笔记--归并排序
数据结构与算法(Java篇)笔记--归并排序
|
1月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--选择排序
数据结构与算法(Java篇)笔记--选择排序
|
1月前
|
搜索推荐 Python
Python实现插入排序算法
Python实现插入排序算法
10 1
|
1月前
|
搜索推荐 C#
C#实现插入排序算法
C#实现插入排序算法
12 1