直接插入排序
来源:互联网 发布:旅游 本质知乎 编辑:程序博客网 时间:2024/06/04 19:30
直接插入排序:假设一个序列中前n个元素为有序的序列,则将长度为n+1的序列排序的方法是:将第n+1个元素同前n个有序序列中的元素依次比较,找到其应该放入的位置后直接插入。
代码:
python:
def insert_sort(li):
for i inrange(1,len(li)):\\从第二个元素开始遍历
key = li[i]\\保存当前元素
j = i-1
whilej >= 0 and li[j]> key:\\若前一个元素大于当前元素
li[j+1] =li[j]\\前前一个元素后移一位
j -= 1
li[j+1] = key\\将当前元素插入到正确位置
returnli
JAVA:
public void sort(){
for(int i=1; i<this.li.length; i++){
int key = this.li[i];
int j = i-1;
while(j >=0 && this.li[j] > key){
this.li[j+1] = this.li[j];
j--;
}
this.li[j+1] = key;
}
}
C++:
void insert_sort(int *li,int n){
for(int i=1;i<n; i++){
int key = li[i];
int j = i-1;
while(j>=0 && li[j]>key){
li[j+1]= li[j];
j--;
}
li[j+1] =key;
}
}
时间复杂度分析: 对整个序列排序需要进行两次循环,内层循环是第n个元素需要一次同前面n-1个元素进行比较并交换,外层循环则确定当前需要排序的元素是哪个。因此其时间复杂度为O(n2).
稳定性分析:同冒泡排序类似,直接插入排序只会在相邻元素间进行比较并交换,若相邻元素相同则不会进行交换,不会改变排序前后元素的相对位置,所以直接插入排序也是稳定的。
- 插入排序--直接插入
- 插入排序------直接插入
- 插入排序---直接插入
- 排序:直接插入排序
- 排序---直接插入排序
- 排序 -- 直接插入排序
- 排序---直接插入排序
- 排序--直接插入排序
- 排序-直接插入排序
- 【排序】直接插入排序
- 排序--直接插入排序
- 排序:直接插入排序
- 【排序】直接插入排序
- 排序--直接插入排序
- 排序--直接插入排序
- 排序-直接插入排序
- 插入排序--直接插入排序
- 插入排序-直接插入排序
- C++基础知识(二)——多态与虚函数
- 现代操作系统学习 第一章
- Android流媒体
- 博客
- 大型网站系统架构实践(二)分布式模块之间的通信
- 直接插入排序
- colorPrimary、colorPrimaryDark、colorAccent详解
- 时频域能量相等(parseval定理)
- spring工厂
- python:if __name__ == '__main__'到底有什么用?
- 用pdflatex编译遇到K font txsy could not be created问题
- c++中size_t和size_type之间的关系
- Vue.js使用vue-router构建单页应用
- Java二维数组初始化