算法系列之--Javascript和Kotlin的插入算法(原)
来源:互联网 发布:java 手动编译web项目 编辑:程序博客网 时间:2024/06/05 16:29
上一节我们学习了选择算法,这一节来学习插入算法,算法系列文章目录在这里。
1. 从第一个元素开始,该元素可以认为已经被排序
2. 取出下一个元素,在已经排序的元素序列中从后向前扫描
3. 如果该元素(已排序)大于新元素,将该元素移到下一位置
4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
5. 将新元素插入到该位置后
6. 重复步骤2~5
最坏时间复杂度O(n^2)
最优时间复杂度O(n)
介绍
1. 从第一个元素开始,该元素可以认为已经被排序
2. 取出下一个元素,在已经排序的元素序列中从后向前扫描
3. 如果该元素(已排序)大于新元素,将该元素移到下一位置
4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
5. 将新元素插入到该位置后
6. 重复步骤2~5
特点
效率
最坏时间复杂度O(n^2)
最优时间复杂度O(n)
源码
Js源码
let list = [123456, 4, 8, 23, 5, 13, 323, 1, 9, 2, 3]for (let i = 1; i < list.length; i++) { for (let j = i; j > 0; j--) { if (list[j] > list[j - 1]) { //已经找到位置,停止循环 break } let temp = list[j] list[j] = list[j - 1] list[j - 1] = temp }}
Kotlin源码
private var ARRAY_COUNT = 100000/* * 获取随机数列 */private fun getSortList(): IntArray { var sortList = IntArray(ARRAY_COUNT) var ra = Random() for (i in sortList.indices) { sortList[i] = ra.nextInt(ARRAY_COUNT * 10) } return sortList}/* * 交换数列元素 */private fun swapByIndex(list: IntArray, x: Int, y: Int) { var temp = list[x] list[x] = list[y] list[y] = temp}/*插入算法 */private fun chaRu() { var sortList = getSortList() for (i in 1 until sortList.size) { for (j in i downTo 1) { if (sortList[j] > sortList[j - 1]) { //已经找到当前元素要插入的位置 break } swapByIndex(sortList, j - 1, j) } }}
下一节我们来学习一种在插入算法基础上设计的更为高效的排序算法----希尔算法
阅读全文
0 0
- 算法系列之--Javascript和Kotlin的插入算法(原)
- 算法系列之--Javascript和Kotlin的冒泡算法(原)
- 算法系列之--Javascript和Kotlin的选择算法(原)
- 算法系列之--Javascript和Kotlin的希尔排序算法(原)
- 算法系列之--Javascript和Kotlin的堆排序算法(原)
- 算法系列之--Javascript和Kotlin的基数排序算法(原)
- 算法系列之--Javascript和Kotlin的快速排序算法(原)
- 算法系列之--Kotlin的算法实战比较(原)
- 算法系列之--C++和java的冒泡算法及图解(原)
- javascript系列之排序算法<一、冒泡、快速、直接插入>
- 基础算法系列(七)排序算法之插入排序
- 算法导论系列文章之插入排序和归并排序
- 算法系列简单研究(原)
- 排序算法系列之插入排序
- 排序算法系列之插入排序
- JavaScript排序算法之插入排序
- 【算法系列】插入排序算法
- 啊哈,算法 之原语的力量
- 牛客网-DNA最长片段
- simplejson之JSON转化为对象-yellowcong
- 11
- RecyclerView的使用
- 使用react-router-dom优雅的实现页面(路由)跳转, 而且保持当前页面状态
- 算法系列之--Javascript和Kotlin的插入算法(原)
- strstr的用法
- 碰瓷碰出新高度?团伙作案有预谋,一言不合就碰你,还有这种操作?
- Oracle基础教程-第十章 安全管理
- 层次查询、行列转换学习笔记
- 删除和恢复 一起写在一个JS方法中
- 项目如何引入GreenDao3.2的记录
- Redis入门操作笔记
- Linux定时任务—Crontab每秒访问一次网页