博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DSA——直接插入排序笔记
阅读量:5117 次
发布时间:2019-06-13

本文共 479 字,大约阅读时间需要 1 分钟。

不需要额外申请空间,从数组的第二个元素即 a[1]开始,将其设为key

用key依次从后【key的前一个元素】比较,当key比当前值小时候,把当前值到Key原位置之间的元素依次向后移动一个单元。

key>=当前值以后,把key复制给当前值后面的值即可。

*保证了Key值之前的所有元素都是sorted的。

void InsertSort(int a[], int n){	int i, j, key;	for (i = 1; i < n; i++)	{		j = i - 1;		key = a[i];		while (j >= 0 && key

空间复杂度O(1);

时间复杂度:

    最好:数组为正序排序,只需要执行for循环,因为key>a[j],直接执行a[j+1]=key即可——O(n)

    最坏:逆序,for+while=O(n^2)

平均就是O(n^2)【对于随机排序的数组,移动和比较次数更接近最坏情况】

稳定:

key

转载于:https://www.cnblogs.com/Cherrylalala/p/6477239.html

你可能感兴趣的文章
使用pygal_maps_world.i18n中数据画各大洲地图
查看>>
sql server必知多种日期函数时间格式转换
查看>>
jQuery EasyUI 的下拉选择combobox后台动态赋值
查看>>
timeline时间轴进度“群英荟萃”
查看>>
python if else elif statement
查看>>
网络编程
查看>>
文本隐藏(图片代替文字)
查看>>
java面试题
查看>>
提高码力专题(未完待续)
查看>>
pair的例子
查看>>
前端框架性能对比
查看>>
@property中 retain 详解
查看>>
uva 387 A Puzzling Problem (回溯)
查看>>
12.2日常
查看>>
Delphi 取整函数round、trunc、ceil和floor
查看>>
C/C++二维数组的用法
查看>>
排序 冒泡排序法
查看>>
同步代码时忽略maven项目 target目录
查看>>
MVC.NET:提供对字体文件.woff的访问
查看>>
Informatica_(2)第一个例子
查看>>