package mainimport ( "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+"\n") } return nil}//冒泡排序法func BubbleSort(values []int) []int{ flag:=true for i:=0;ivalues[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) }}