当前位置 博文首页 > go实现冒泡排序的示例代码

    go实现冒泡排序的示例代码

    作者:Gabriel 时间:2021-02-04 06:10

    冒泡排序: (Bubble Sorting)基本思想是通过对待排序序列从后向前(从下标较大的元素开始)以此比较相邻元素的排序码,若发现逆序则交换,使排序码较小的元素逐渐从后补移向前部(从下标较大的单元移向单位较小的单元),就像水底的气泡一样逐渐向上冒。

    因为排序的过程中,各元素不断的接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换,从而减少不必要的比较(优化)。

    BubleSort.go

    package main;
    
    import "fmt"
    
    func main() {
     array := []int{5,4,3,4,2}
     res := bubleSort(array)
     fmt.Println(res)
    }
    
    func bubleSort(array []int) []int {
     length :=len(array)
     //isChange :=false
    
     for i:=0;i<length;i++ {
      for j:=0;j<length-i-1;j++ {
      // j <= length-i-1 这个是关键,每次 i ,少比较最后一位数组
       if array[j] > array[j+1] {
        array[j+1],array[j] = array[j],array[j+1]
        //isChange = true
       }
      }
      // 直接跳下次循环
      // if !isChange {
      //  break;
      // }
     }
     return array;
    }
    
    

    冒泡冒泡,就是每次循环都将最大的值,冒泡到数组最后,第二次冒泡也是从数组下标0位置开始。

    js
    下一篇:没有了