首页 > 编程语言 > 详细

go排序 插入排序

时间:2021-07-21 17:14:46      阅读:29      评论:0      收藏:0      [点我收藏+]
package main

import "fmt"

func main() {
	var list = []int{3,4,11,223,4,5,-1,5,4,3,2}
	insertSort(list)
	fmt.Println(list)
}

//通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。可以理解为玩扑克牌时的理牌;
// 单指针
func insertSort(arr []int) {
	n := len(arr)
	for i := 1; i < n; i++ {

		temp := arr[i] // 待插入的数据
		j:= i-1
		for ;j>=0;j--{
			fmt.Println(temp,arr[j])

			if arr[j] > temp{
				arr[j+1] = arr[j] // 外层的每个数都从内层的最后一个数开始对比 如果发现比他小 就把当前位置往后移动 因为最后一个是带插入的位置 已经空出来了
			} else {
				break
			}
		}

		if j+1 !=i {  // 最终跳出循环的条件就是找到了一个位置比带插入的数据还大的他一前一个数字 满足的位置是他的后一位
			arr[j+1] = temp
		}
	}


}

  

go排序 插入排序

原文:https://www.cnblogs.com/brady-wang/p/15039492.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!