练习题

    //go规定大写的方法名才能被导入
    //随机生成10个整数(1-100的范围)保存到数组,
    // 并倒序打印 求平均值、最大值和最大值的下标、并查找里面是否有55
 
代码:
package hmoework

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

//倒序打印方法
func ReservArr(arr *[9]int) {
    for i := 0; i < (len(arr) - 1 - i); i++ {
        temp := arr[i]
        arr[i] = (arr)[len(arr)-1-i]
        (arr)[len(arr)-1-i] = temp
    }
    //第i坐标上的元素与倒数第i个坐标的元素进行交换
}

//冒泡排序(从小到大)
func bubble_sort1(arr [9]int) (max int) {
    for j := 1; j < len(arr)-1; j++ {
        for i := 0; i < len(arr)-j; i++ {
            if (arr)[i] > (arr)[i+1] {
                temp := (arr)[i]
                (arr)[i] = (arr)[i+1]
                (arr)[i+1] = temp
            }
        }
    }
    // fmt.Printf("冒泡排序(从小到大):%v\n", *arr)
    // fmt.Printf("最大值为:%v", (*arr)[len(*arr)-1])
    max = (arr)[len(arr)-1]
    return max
}

// 查找最大值下标
// 二分查找
func find_max_maxindex(arr *[9]int, leftindex int, rightindex int, findvalue int) {
    if leftindex > rightindex {
        fmt.Println("没找到")
        return
        // return
    }
    mid := (leftindex + rightindex) / 2
    if (*arr)[mid] > findvalue {
        find_max_maxindex(arr, leftindex, mid-1, findvalue)
    } else if (*arr)[mid] < findvalue {
        find_max_maxindex(arr, mid+1, rightindex, findvalue)
    } else {
        fmt.Printf("找到了%v,下标为%v", findvalue, mid)
    }

}

func Work1() {
    //go规定大写的方法名才能被导入
    //随机生成10个整数(1-100的范围)保存到数组,
    // 并倒序打印 求平均值、最大值和最大值的下标、并查找里面是否有55
    rand.Seed(time.Now().UnixNano())
    var arr [9]int
    for i := 0; i < len(arr); i++ {
        arr[i] = rand.Intn(10)
    }

    fmt.Println("交换前arr=", arr)

    bubble_sort1(arr) //排序  返回最大值 此处只进行值拷贝  不然最大值坐标永远为len(arr)-1
    max := bubble_sort1(arr)
    //获取最大值后进入二分查找方法,找到原数组中最大值的下标
    for i, v := range arr {
        if v == max {
            fmt.Printf("最大值为%v,坐标为%v", v, i)
        }
    }
    //计算出最大值和最大值坐标后再使用指针进行数组倒序显示
    ReservArr(&arr)
    fmt.Println("\n交换后arr=", arr)

    fmt.Println(arr)
    //使用二分查找数组里是否有55
    find_max_maxindex(&arr, 0, len(arr)-1, 5)
}
posted @ 2022-03-11 14:32  零点漂移现象  阅读(32)  评论(0)    收藏  举报