第 10 節:複合型別 1.4 氣泡排序與陣列去重

kuibatian發表於2019-12-03

04 氣泡排序

package main

import "fmt"

func main() {
    var arr [10]int = [10]int{9, 1, 5, 6, 8, 2, 10, 7, 4, 3}

    //外層執行一次內層執行一週
    //外層控制行
    for i := 0; i < len(arr)-1; i++ {
        //內層控制列
        for j := 0; j < len(arr)-1-i; j++ {

            //滿足條件進行交換  大於號 升序  小於號 降序
            if arr[j] < arr[j+1] {
                //交換資料
                arr[j], arr[j+1] = arr[j+1], arr[j]
            }

        }
    }

    fmt.Println(arr)

}

05 隨機數做一個陣列去重

第一: 隨機數使用

package main

import (
    "fmt"
    "math/rand"
    "time"
)

func main() {

    //1、匯入標頭檔案  math/rand  time
    //2、隨機數種子
    //3、建立隨機數

    //建立隨機數種子 進行資料混淆
    rand.Seed(time.Now().UnixNano())

    //偽隨機數 使用的1970.1.1.0.0.0
    //fmt.Println(rand.Intn(10))//取模10   得到0-9
    for i := 0; i < 10; i++ {
        fmt.Println(rand.Intn(10))
    }
}

第二:陣列去重

package main

import (
    "math/rand"
    "time"
    "fmt"
)

func main0601() {

    rand.Seed(time.Now().UnixNano())
    var arr [10]int

    for i := 0; i < len(arr); i++ {
        arr[i] = rand.Intn(100)
    }

    fmt.Println(arr)

    for i := 0; i < len(arr)-1; i++ {
        for j := 0; j < len(arr)-1-i; j++ {
            if arr[j] > arr[j+1] {
                arr[j], arr[j+1] = arr[j+1], arr[j]
            }

        }
    }
    fmt.Println(arr)
}

func main0602() {
    //猜數字 1-100

    rand.Seed(time.Now().UnixNano())

    num := rand.Intn(100) + 1

    value := 0
    for {
        fmt.Println("請輸入一個數字:")
        fmt.Scan(&value)

        if num > value {
            fmt.Println("您輸入的數字太小了")
        } else if num < value {
            fmt.Println("您輸入的陣列太大了")
        } else {
            fmt.Println("您猜對了")
            break
        }
    }

}

//陣列去重
func main() {
    //隨機雙色球彩票
    //紅色 1-33  選擇6個 不能重複 藍球 1-16 選擇1個 可以和紅球重複

    rand.Seed(time.Now().UnixNano())
    var red [6]int

    for i := 0; i < len(red); i++ {
        v := rand.Intn(33) + 1

        for j := 0; j < i; j++ {
            //資料重複
            if v == red[j] {
                //重新隨機
                v = rand.Intn(33) + 1
                //將j賦值為-1在迴圈執行到上面是進行++操作後值為0  也就相當於重新比對
                j = -1
            }
        }
        //將沒有重複的數字新增到陣列中
        red[i] = v

    }
    fmt.Println("紅球:", red, "藍球:", rand.Intn(16)+1)
}

相關文章