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

生产企业网站欣赏海外模板网站有哪些

生产企业网站欣赏,海外模板网站有哪些,网站建设佰首选金手指五,深圳建站公司告诉你十个建站步骤插入排序 插入排序是一种简单的排序算法,以数组为例,我们可以把数组看成是多个数组组成。插入排序的基本思想是往前面已排好序的数组中插入一个元素,组成一个新的数组,此数组依然有序。光看文字可能不理解,让我们看看…

插入排序

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

相关文章:

  • 住建部网站村镇建设管理平台策划方案范文
  • 上海专业网站建设公司有哪些学游戏设计去哪个学校
  • 网站建设的经验总结微商城系统销售
  • 怎么做跳转网站首页房屋设计图制作软件
  • 网站设计软件培训怎么样网页设计培训高清图集
  • 轮播网站大男人直播视频
  • 广州网站建设系统开发wordpress 个人简历
  • 广西住房和城乡建设厅网站首页wordpress仿互站
  • 阿里云服务器责任怎么做网站最好国内免费网站空间
  • 牛商网做的网站有哪些营销成功的案例
  • 共享备案网站海葵音乐制作公司
  • 网站建设搭建公司网站的推广和宣传方式
  • 网站调用优酷视频去广告php做网站需要的软件
  • 北京建站程序凯里市企业建站公司
  • 中国建设银行预约网站新乐网站建设
  • 学习网站建设的步骤网站开发的分工和流程
  • 北京网站建设学习网站建设的合同 体会
  • 南京网站设南京网站设计计wordpress网站打包app
  • 网站做视频链接网站运营与管理期末考试
  • 怎样用云服务器做网站福建seo网络
  • 石家庄品牌网站建设设计师个人网页设计
  • 消费者联盟网站怎么做手机微网站
  • 分享类网站源码在哪里学广告设计培训
  • 制作网站的最大公司wordpress问答中心
  • 学做网站应该看那些书国外网页设计分享网站
  • 重庆网站制作服务遵义在线观看
  • 温州网站建设制作公司网站所有者是什么意思
  • 建网站备案淄博营销网站建设公司
  • 深圳网站建设厂家毕设网站代做一般预算多少钱
  • wap网站做视频直播设计网站的关键点