当前位置: 首页 > news >正文

用rem做移动网站关于营销的最新的新闻

用rem做移动网站,关于营销的最新的新闻,模板网文,杭州网站搜索排名插入排序 插入排序是一种简单的排序算法,以数组为例,我们可以把数组看成是多个数组组成。插入排序的基本思想是往前面已排好序的数组中插入一个元素,组成一个新的数组,此数组依然有序。光看文字可能不理解,让我们看看…

插入排序

插入排序是一种简单的排序算法,以数组为例,我们可以把数组看成是多个数组组成。插入排序的基本思想是往前面已排好序的数组中插入一个元素,组成一个新的数组,此数组依然有序。光看文字可能不理解,让我们看看图示:
在这里插入图片描述
插入排序的时间复杂度为 O(N²)。

算法实现

import ("fmt"
)func main() {nums := [4]int{4, 1, 3, 2}fmt.Println("原数组:", nums)fmt.Println("--------------------------------")InsertionSort(nums)
}func InsertionSort(nums [4]int) {for i := 1; i < len(nums); i++ {for j := i; j > 0 && nums[j] < nums[j-1]; j-- {nums[j], nums[j-1] = nums[j-1], nums[j]}fmt.Printf("第 %d 轮后:%v\n", i, nums)}fmt.Println("--------------------------------")fmt.Println("排序后的数组:", nums)
}

执行结果:

原数组: [4 1 3 2]
--------------------------------1 轮后:[1 4 3 2]2 轮后:[1 3 4 2]3 轮后:[1 2 3 4]
--------------------------------
排序后的数组: [1 2 3 4]

原数组: [4 1 3 2]

第 1 轮后:[1 4 3 2]
第 2 轮后:[1 3 4 2]
第 3 轮后:[1 2 3 4]

排序后的数组: [1 2 3 4]

算法优化

上面的代码,是通过不断地交换元素,直到无法交换,才能将元素放置到待插入的位置,为了避免频繁交换元素而导致效率低,将交换的逻辑变成把前面的数往后移,最后再将待排序的元素插入到合适的位置即可。

import ("fmt"
)func main() {nums := [4]int{4, 1, 3, 2}fmt.Println("原数组:", nums)fmt.Println("--------------------------------")InsertionSort(nums)
}func InsertionSort(nums [4]int) {for i := 1; i < len(nums); i++ {t := nums[i]j := ifor ; j > 0 && t < nums[j-1]; j-- {nums[j] = nums[j-1]}nums[j] = tfmt.Printf("第 %d 轮后:%v\n", i, nums)}fmt.Println("--------------------------------")fmt.Println("排序后的数组:", nums)
}

用变量 t 记录待排序的元素,用 j 变量往前查找,只要前面的数比 t 大,那么就往后移,最后将 t 插入到合适的位置。

小结

本文首先对插入排序进行简单地介绍,通过图片来演示插入排序的过程,然后使用 Go 语言实现插入排序的算法。为减少算法中交换次数的逻辑,对算法进行优化,将交换的逻辑变成把前面的数往后移,最后将待排序的数插入到合适的位置即可。
除了这种优化方式,还有一种改造方式:普通的算法往左查找的方式是线性查找,由于元素是有序的,因此线性查找可以换成二分查找,但是经过二分找到待插入的位置之后,也得移动前面的元素,相比上面的优化方法,还多了 O(logn) 的查找时间复杂度,因此我认为没有必要改造成二分查找。

http://www.shuangfujiaoyu.com/news/49688.html

相关文章:

  • 深圳福永网站建设公司百度推广助手电脑版
  • 保山做网站网站免费搭建平台
  • 北京摇号网站维护北京做网站推广
  • 广州电商网站建设博客推广的方法与技巧
  • 电影网站这么做关键词郑州网络营销推广
  • 童装 技术支持 东莞网站建设搜索引擎优化的缺点包括
  • 福建富通建设有限公司网站网络营销推广专员
  • 帝国 只做网站地图江门关键词优化公司
  • 网站推荐你懂我的意思吧知乎山东seo推广
  • 网站建设兆金手指花总百度怎么发广告
  • 小企业做网站怎么做免费投放广告的平台
  • 做视频直播的网站南京seo排名优化
  • 大型网站故障我想开个网站平台怎么开呢
  • 潜江网站设计公司百度手机app
  • 潍坊设计网站建设精品成品网站入口
  • 注册一个网络公司需要多少钱云seo
  • 如何用自己电脑做网站服务器吗seo 培训教程
  • 房山网站开发百度公司有哪些部门
  • 如何更快的让百度收录网站广告类的网站
  • table表格 做的网站廊坊seo排名扣费
  • 自学网站建设买什么书今日腾讯新闻最新消息
  • 不成立公司怎么做企业网站重庆seo培训
  • 网站前端做出来后台怎么做广州最新政策
  • 学习网页设计的网站自动交换友情链接
  • 网页设计的代码网络优化工程师吃香吗
  • 夜间正能量不良网站入口不用下载电脑培训网
  • 网站建设介绍ppt模板seo前线
  • 太原网站优化怎么做杭州seo网站优化公司
  • 青海网站建设哪家强杭州制作公司网站
  • wordpress 拿shell兰州网络seo公司