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

水利部建设项目水资源论证网站云南seo网站关键词优化软件

水利部建设项目水资源论证网站,云南seo网站关键词优化软件,操作展示或网站展示,数据网站怎么做的插入排序 插入排序是一种简单的排序算法,以数组为例,我们可以把数组看成是多个数组组成。插入排序的基本思想是往前面已排好序的数组中插入一个元素,组成一个新的数组,此数组依然有序。光看文字可能不理解,让我们看看…

插入排序

插入排序是一种简单的排序算法,以数组为例,我们可以把数组看成是多个数组组成。插入排序的基本思想是往前面已排好序的数组中插入一个元素,组成一个新的数组,此数组依然有序。光看文字可能不理解,让我们看看图示:
在这里插入图片描述
插入排序的时间复杂度为 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.khdw.cn/news/21900.html

相关文章:

  • 做软件的网站热门关键词
  • 前端网页开发宁波seo关键词
  • 外贸网站建设及推广整合营销的概念
  • 宁夏城乡和住房建设厅网站网站推广seo方法
  • 如何做网站运营武汉今日新闻头条
  • 怎么用sharepoint做网站百度推广获客成本大概多少
  • 域名一定要备案吗大丰seo排名
  • 齐河网站建设怎样在百度上免费做广告
  • 邯郸网站设计注册关键词优化
  • 沈阳网站建设成创百度小说排行榜风云榜单
  • 铜陵app网站做营销招聘seo项目优化案例分析文档
  • 廊坊网站建设seo的五个步骤
  • seo优化推广软件台州百度推广优化
  • 产品网站怎样做外部链接西安seo管理
  • seo排名策略关于seo的行业岗位有哪些
  • o2o网站建设多少钱杭州百家号优化
  • 阿里巴巴做国际网站多少钱能打开任何网站浏览器
  • 越秀营销型网站2024近期新闻
  • 平凉建设局官方网站百青藤广告联盟
  • 岳阳网站建设有哪些石家庄网络关键词排名
  • 打开网站是空白页面在线推广网站的方法
  • 做个网站大约多少钱google chrome谷歌浏览器
  • 怎么用微信做网站线上产品推广方案
  • 中国有名的网站建设公司长沙关键词优化新报价
  • 装修设计效果图免费软件长沙seo排名公司
  • 做外贸找客户最好用的网站对网站外部的搜索引擎优化
  • 男人女人做性关系网站你对网络营销的理解
  • 网站开发与建设会计分录爱站网影院
  • 游戏开发网站开发广州谷歌seo公司
  • 潍坊企业建站系统百度首页登录入口