zoukankan      html  css  js  c++  java
  • Go-冒泡排序

    package main
    
    import "fmt"
    
    // 冒泡排序:第一个元素和第二个元素比较值大小,如果第一个元素大于第二个元素则交换位置否则不交换,然后第二个元素与第三个元素比较大小,依次论推
    // 思路:
    //	1. 如果第一个元素大于第二个元素,交换位置
    //	2. 对数组进行一次完整交换
    //  3. 对数组进行多次完整交换
    // 特征: 每完成一次遍历交换,要么将最小或者将最大放到最后,类似鱼吐泡泡,所以称为冒泡排序
    
    // 支持排序的对象: 
    // 1. 所以元素类型相同,并支持可比较
    // 2. 元素位置有顺序
    // 3. 元素支持交换位置
    
    // 排序思维: 事情的重要性、操作流程
    
    func bubble(nums []int) {
    	// j 需要经历的循环次数
    	for j := 0; j < len(nums)-1; j++ {
    		// hasExchanged 优化方案,如果一次交换都没发送则认为是已经排好序的
    		hasExchanged := false
    		for i := 0; i < len(nums)-1-j; i++ {
    			// 交换
    			if nums[i] > nums[i+1] {
    				nums[i], nums[i+1] = nums[i+1], nums[i]
    				hasExchanged = true
    			}
    		}
    		if !hasExchanged {
    			break
    		}
    	}
    
    }
    
    func main() {
    	data := []int{22, 33, 11, 23, 55, 4, 33, 45, 23}
    	bubble(data)
    	fmt.Println(data) // [4 11 22 23 23 33 33 45 55] 升序
    }
    

      

  • 相关阅读:
    SQL-Duplicate Emails
    c#创建可比较对象
    c#扩展方法
    C#Lambda和委托
    C#集合
    c#显示实现接口和隐式实现的区别
    bs同时上传文件以及文件信息
    sql查询数据库中所有 ,数据为空的表
    sql查询所有表名和描述
    MES数据采集模块小结
  • 原文地址:https://www.cnblogs.com/2bjiujiu/p/14426607.html
Copyright © 2011-2022 走看看