• [算法初步]之简单选择排序


    ##1 说明
    简单选择排序不用多说,也是属于一种选择排序。
    
    ##2 场景:
    小学时候出操时候,老师都要求小学生按高矮站成一排。但是明显的小学生们没那么有意识,站成的队伍还是很混乱的。
    这个时候就只能由老师亲自出马进行排序了,比如一行队伍:
    
    * [3, 5, 1, 7, 6, 2, 11, 13, 4]
    
    老师认为前排站的肯定是最矮的同学,因此老师先把3号同学定义为最矮的同学。然后在此基础上调整。
    
    * [3, 5, 1, 7, 6, 2, 11, 13, 4] (标记3号最矮)
    
    结果老师往后走了一圈,发现后面的1号同学才应该是标记为最矮的,直接拉出来3号和1号交换位置。
    
    * 已排序[1]	未排序[5, 3, 7, 6, 2, 11, 13, 4]  (标记换到1号,交换3和1)
    	
    1号位置不担心了,然后老师继续重复上面的方法。将第二位置的5号同学定义为最矮,结果在后面又找到了3号同学更矮,两者交换。
    
    * 已排序[1,3]	未排序 [5, 7, 6, 2, 11, 13, 4] (标记换到3号,交换5和3)
    
    这样一直排序,直到最后一个同学。排完了就可以做操了。
    
    * [1, 2, 3, 4, 5, 6, 7, 11, 13]  
    
    ##go语言实现
    
    	package main
    	
    	import "fmt"
    	
    	/*
    	 * [简单选择排序]场景:
    	 * 1 左边人的队列认为已经排好序(i),右边人的队列未排好的(N-i)。
    	 * 2 以左边第一个人为最矮小标记,查出最矮小的人。
    	 * 3 左边的人和最矮的人交换位置。
    	 * 4 重复步骤2,循环N-1次,直到到最后一个人为止。
    	 */
    	func SelectSort(data *[9]int) {
    	
    		var min int
    		for i := 0; i < len(data)-1; i++ {
    			min = i
    			// 查出最小值位置
    			for j := i + 1; j < len(data); j++ {
    				if data[j] < data[min] {
    					min = j
    				}
    			}
    			// 交换左边值和最小值
    			data[i], data[min] = data[min], data[i]
    	
    		}
    	}
    	
    	func main() {
    	
    		data := [9]int{5, 1, 3, 7, 6, 2, 11, 13, 4}
    		SelectSort(&data)
    		for x := 0; x < len(data); x++ {
    			fmt.Print(data[x], ",")
    		}
    	}
    
    
  • 相关阅读:
    html5+plus(5+app) 扫一扫(plus.barcode)
    uniapp地图控件(浅显使用)
    sku排列算法,库存类展示(规格,型号,颜色等)
    『嗨威说』数据结构中常用的查找算法思路总结
    『ACM C++』 PTA 天梯赛练习集L1 | 057-063
    『ACM C++』 PTA 天梯赛练习集L1 | 054-056
    『ACM C++』 PTA 天梯赛练习集L1 | 052-053
    『ACM C++』 PTA 天梯赛练习集L1 | 050-51
    『ACM C++』 PTA 天梯赛练习集L1 | 048-49
    『ACM C++』 PTA 天梯赛练习集L1 | 046-47
  • 原文地址:https://www.cnblogs.com/sxt102400/p/3025229.html
Copyright © 2020-2023  润新知