直接插入排序
来源:互联网 发布:认证报名保存数据失败 编辑:程序博客网 时间:2024/05/29 03:40
author: neumanndong
date: 2017/4/8 22:04
直接插入排序(Straight Insertion Sort):将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1的有序表
算法(C语言):
void InsertSort (SqList &L) {for(i = 1; i < L.length; i++)if(L.r[i].key < L.r[i-1].key; i++){L.r[0] = L.r[i];L.r[i] = L.r[i-1];for (j = i - 2; LT(L.r[0].key,L.r[j].key); j--)L.r[j+1] = L.r[j];L.r[j+1] = L.r[0] }}
java版本:
public class Test {public static void InsertSort(int SqList []) {for(int i = 1; i < SqList.length; i++)if(SqList[i] < SqList[i - 1]){int temp = SqList[i];int j;for (j = i - 1;j >= 0 && temp < SqList[j] ; j--) //attention: j >=0 应该放在前面SqList[j+1] = SqList[j];SqList[j+1] = temp; }} public static void main(String[] args) { int arr[] = {49,38,65,97,76,13,27,49}; InsertSort(arr); System.out.println("\n排序之后:"); for(int element : arr){ System.out.print(element+" "); } }}
python 版本:
def InsertSort(SqList): length = len(SqList) for i in range(1,length): if(SqList[i] < SqList[i-1]): temp = SqList[i] j = i - 1 while j >= 0 and SqList[j] > temp: #两个条件都满足 SqList[j+1] = SqList[j]; j = j - 1; SqList[j+1] = tempif __name__ == "__main__": SqList = [49,38,65,97,76,13,27,49] InsertSort(SqList) for i in SqList: print i
直接插入排序是稳定排序
时间复杂度: 最好 O(n) 最坏 O(n*n) 平均O(n*n) 辅助 O(1)
**************************
You know some birds are not meant to be caged, their feathers are just too bright.
你知道,有些鸟儿是注定不会被关在牢笼里的,它们的每一片羽毛都闪耀着自由的光辉。
0 0
- 插入排序--直接插入
- 插入排序------直接插入
- 插入排序---直接插入
- 排序:直接插入排序
- 排序---直接插入排序
- 排序 -- 直接插入排序
- 排序---直接插入排序
- 排序--直接插入排序
- 排序-直接插入排序
- 【排序】直接插入排序
- 排序--直接插入排序
- 排序:直接插入排序
- 【排序】直接插入排序
- 排序--直接插入排序
- 排序--直接插入排序
- 排序-直接插入排序
- 插入排序--直接插入排序
- 插入排序-直接插入排序
- 利用VS2005进行dump文件调试
- DNS的基本原理
- 用户登录并记住密码
- 类名与关键字之间的宏定义
- java集合系列(一)
- 直接插入排序
- LeetCode之Best Time to Buy and Sell Stock
- ubiuntu截屏
- 关于纹理合成的Matlab教程
- linux挂载概念理解
- linux下find指令用法
- JPA-5 使用二级缓存
- 作为一名初学者说说js从零开始面向对象
- 矩阵快速幂求斐波那契数列