博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构之排序:直接插入排序
阅读量:4286 次
发布时间:2019-05-27

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

直接插入排序(Straight Insertion Sort)是一种简单的排序方法。

基本思想

假设待排序的记录存放在数组r[0..n-1]中。开始时,先将第0个记录组成一个有序的子表,然后依次将后面的记录插入到这个子表中,并且一直保持这个子表的有序,知道全部记录插入完成为止。

直接插入排序

主要步骤

  1. 将r[i]暂存在临时变量tmp中
  2. 将tmp与r[j](j=i-1,i-2,…,0)一次比较,如果tmp<r[j],则将r[j]后移一个位置,知道tmp>r[j]为止,此时j+1是r[i]的插入位置
  3. 将tmp插入到r[j+1]
  4. 令i=1,2,3,…,n-1,重复1-3

性能

空间复杂度:只使用了tmp一个临时变量,空间复杂度为 O(1)

时间复杂度:最好的情况是全部有序,只需要比较n-1次,不需要移动,为 O(n) ;最坏的情况为逆序,为 O(n2) ;平均为为 O(n2)

稳定性:是稳定的排序方法。

java代码实现:

public static 
> void insertSort(T[] arr) { T tmp = null; int i, j; for (i = 1; i < arr.length; i++) { tmp = arr[i]; for (j = i; j > 0 && tmp.compareTo(arr[j - 1]) < 0; j--) { arr[j] = arr[j - 1]; } arr[j] = tmp; } }

参考:

1. 刘小晶,数据结构——Java语言描述(第2版),清华大学出版社
2. MARK A W, 数据结构与算法分析: Java 语言描述,机械工业出版社

你可能感兴趣的文章
get请求和post请求demo
查看>>
MD5加密工具
查看>>
java四舍五入保留两位小数
查看>>
图片上传功能
查看>>
Android数据持久化功能之一:文件存储
查看>>
Android数据持久化之二:SharedPreferences 存储(上)
查看>>
Android数据持久化之二:SharedPreferences 存储(下)
查看>>
SharedPreference存储实战之记住登陆账号密码
查看>>
自定义控件解决重复编码问题
查看>>
如何在项目的任何地方轻松获取到全局状态信息Context
查看>>
ListView控件性能提升
查看>>
AsyncTask 异步消息处理机制
查看>>
android下拉刷新功能---教你实现简单的ListView下拉刷新
查看>>
ListView分页展示数据功能一(按钮方式)
查看>>
Android四大组件之服务(一)-----服务基础功能简述
查看>>
Android通知Notification入门小例子(一)
查看>>
Android中通知的提示音、震动和LED灯效果小例子
查看>>
SQLite数据库创建、更新入门
查看>>
SQLite数据库的增删改查
查看>>
Adb connection Error:远程主机强迫关闭一个现有的连接--解决方法
查看>>