zoukankan      html  css  js  c++  java
  • Golang(笔记) 顺序编程

    package main
    
    import (
        "fmt"
        "bufio"
        "io"
        "os"
        "strconv"
        "flag"
    )
    var infile *string=flag.String("i","unsorted.data","File contains values for sorting")
    var outfile *string=flag.String("o","sorted.data","File to receive sorted values ")
    var algorithm *string=flag.String("a","qsort","Sort algorithm")
    func readValues(infile string)(values []int,err error){
        file,err:=os.Open(infile)
        if(err!=nil){
            fmt.Println("Failed to open the input file ",infile)
            return
        }
        defer file.Close()
        br:=bufio.NewReader(file)
        values=make([]int ,0)
        for {
            line ,isPrefix,err1:=br.ReadLine()
            if err1!=nil{
                if err1!=io.EOF{
                    err=err1
                }
                break
            }
            if isPrefix{
                fmt.Println("A too long line ,seems unexpected.")
                return
            }
            str:=string(line)//转换字符数组为字符串
            value,err1:=strconv.Atoi(str)
            if err1!=nil{
                err=err1
                return
            }
            values=append(values,value)
        }
        return
    
    }
    func writeValues(values []int,outfile string) error{
        file,err:=os.Create(outfile)
        if err!=nil{
            fmt.Println("Failed to create the outout file ",outfile)
            return err
        }
        defer  file.Close()
        for _,value:=range values{
        str:=strconv.Itoa(value)
            file.WriteString(str+"
    ")
        }
        return nil
    }
    //冒泡排序法
    func BubbleSort(values []int) []int{
        flag:=true
        for i:=0;i<len(values)-1;i++{
        flag=true
            for j:=0;j<len(values)-i-1;j++{
                if values[j]>values[j+1]{
                    values[j],values[j+1]=values[j+1],values[j]
                    flag=false
                }
            }
            if flag==true{
                break
            }
        }
        return values;
    }
    
    func main() {
    
    flag.Parse()
    
        if infile!=nil{
            fmt.Println("infile=",*infile," outfile=",*outfile," algorithm=",*algorithm)
        }
        values,err:=readValues(*infile)
        if(err==nil){
            fmt.Println("read values:",values)
            values=BubbleSort(values)
            errout:= writeValues(values,*outfile)
            if errout!=nil{
                fmt.Println(errout)
            }
        } else{
            fmt.Println(err)
        }
    }
  • 相关阅读:
    数据挖掘实践(23):实战-- 建筑能源得分预测报告(一)
    返回闭包
    函数指针
    Rust 中的 Closure
    Moves, copies and clones in Rust
    Rust的闭包类型(Fn, FnMut, FnOne的区别)
    Clone VS Copy
    rust socket
    A simple UNIX socket listener in Rust
    【firecracker】系统启动与epoll事件循环
  • 原文地址:https://www.cnblogs.com/yahue/p/3754792.html
Copyright © 2011-2022 走看看