zoukankan      html  css  js  c++  java
  • golang 常用的排序

    • 冒泡排序
      func BubblingSort(slice []int,method bool) [] int{
          for i:=0;i<len(slice)-1;i++{
      
              for j:=0;j<len(slice) -i-1;j++ {
      
                  if method {
                      if slice[j] < slice[j+1]{
                          slice[j],slice[j+1] = slice[j+1],slice[j]
                      }
                  }else{
                      if slice[j] > slice[j +1]{
                          slice[j],slice[j+1] = slice[j+1],slice[j]
                      }
                  }
              }
      
          }
      
          return slice
      }
    • 选择排序
      func ChoiceSort(slice []int,method bool) []int {
          for i:=0;i<len(slice) -1;i++{
      
              var template = [...]int{i,slice[i]}
      
              for j:=i+1;j<len(slice);j++{
      
                  if method {
                      if slice[j] < template[1] {
                          template[0] = j
                          template[1] = slice[j]
                      }
                  }else {
                      if slice[j] > template[1] {
                          template[0] = j
                          template[1] = slice[j]
                      }
                  }
              }
      
              slice[i],slice[template[0]] = slice[template[0]],slice[i]
          }
      
          return slice
      }
    •  插入排序
      func InsertSort(slice []int,method bool) []int {
          for i :=0;i<len(slice) -1;i++ {
              for j:=0;j<i+1;j++{
                  if method{
                      if slice[i+1-j] <slice[i-j]{
                          slice[i+1-j],slice[i-j] = slice[i-j],slice[i-j+1]
                      }
                  }else {
                      if slice[i+1-j] >slice[i-j]{
                          slice[i+1-j],slice[i-j] = slice[i-j],slice[i-j+1]
                      }
                  }
              }
          }
      
          return slice
      }  

      //二分查找
      func BinaryFind(slice []int,val int,leftIndex int,rightIndex int)  bool {
      if leftIndex > rightIndex {
      return false
      }

      middleIndex := (leftIndex + rightIndex) / 2

      if slice[middleIndex] == val{
      return true
      }else if slice[middleIndex] < val {
      return BinaryFind(slice,val,middleIndex+1,rightIndex)
      }else {
      return BinaryFind(slice,val,leftIndex,middleIndex-1)
      }
      }
       
  • 相关阅读:
    设计原则
    最小路径和--p64--动态规划
    ssm实现数据库关键信息的动态加载
    最大二叉树--p654--递归构造
    城市天际线--p807
    长url转短url--p535
    从中序与后序遍历中构造二叉树-p106--数组,二叉树遍历
    n皇后问题--p52--回溯
    Markdown(editormd)语法解析成HTML
    NFA的实现
  • 原文地址:https://www.cnblogs.com/ywjcqq/p/14027484.html
Copyright © 2011-2022 走看看