Go语言实现选择法排序实例

| 收藏本文 下载本文 作者:Aoi

以下是小编精心整理的Go语言实现选择法排序实例(共含10篇),供大家参考借鉴,希望可以帮助到有需要的朋友。同时,但愿您也能像本文投稿人“Aoi”一样,积极向本站投稿分享好文章。

Go语言实现选择法排序实例

篇1:Go语言实现选择法排序实例

作者:不吃皮蛋 字体:[增加 减小] 类型:

代码如下:

package main

import “fmt”

func select_sort(a []int) {

len := len(a)

for i:=0; i < len-1; i++ {

k := i

j:= i + 1

for ; j < len; j++ {

if a[j] < a[k] { k = j }

}

if k != i {

a[i], a[k] = a[k], a[i]

}

}

}

func print_array(a []int) {

for i := 0; i < len(a) - 1; i++ {

fmt.Printf(“%d, ”, a[i])

}

fmt.Print(a[len(a)-1])

}

func main {

a := []int{1, 8, 5, 9, 4, 3, 6, 6}

print_array(a)

fmt.Printf(“n”)

select_sort(a)

print_array(a)

}

输入:

1, 8, 5, 9, 4, 3, 6, 6

输出:

1, 3, 4, 5, 6, 6, 8, 9

希望本文所述对大家的Go语言程序设计有所帮助,

篇2:Go语言实现socket实例

作者:不吃皮蛋 字体:[增加 减小] 类型:转载

用golang不用他的net包还有什么意义,这里提供一个测试代码:

server.go 服务端:

代码如下:

package main

import (

“fmt”

“log”

“net”

“bufio”

)

func handleConnection(conn net.Conn) {

data, err := bufio.NewReader(conn).ReadString(‘n‘)

if err != nil {

log.Fatal(“get client data error: ”, err)

}

fmt.Printf(“%#vn”, data)

fmt.Fprintf(conn, “hello clientn”)

conn.Close()

}

func main() {

ln, err := net.Listen(“tcp”, “:6010”)

if err != nil {

panic(err)

}

for {

conn, err := ln.Accept()

if err != nil {

log.Fatal(“get client connection error: ”, err)

}

go handleConnection(conn)

}

}

client.go 客户端:

代码如下:

package main

import (

“fmt”

“net”

“bufio”

)

func main() {

conn, err := net.Dial(“tcp”, “:6010”)

if err != nil {

panic(err)

}

fmt.Fprintf(conn, “hello servern”)

data, err := bufio.NewReader(conn).ReadString(‘n‘)

if err != nil {

panic(err)

}

fmt.Printf(“%#vn”, data)

}

希望本文所述对大家的Go语言程序设计有所帮助,

篇3:go语言睡眠排序算法实例分析

作者:feiwen 字体:[增加 减小] 类型:

这篇文章主要介绍了go语言睡眠排序算法,实例分析了睡眠排序算法的原理与实现技巧,需要的朋友可以参考下

本文实例讲述了go语言睡眠排序算法,分享给大家供大家参考。具体分析如下:

睡眠排序算法是一个天才程序员发明的,想法很简单,就是针对数组里的不同的数开多个线程,每个线程根据数的大小睡眠,自然睡的时间越长的,数越大,哈哈,搞笑吧,这种算法看起来很荒唐,但实际上很天才,它可以充分利用多核cpu进行计算。

代码如下:

package main

import (

“fmt”

“time”

)

func main {

tab := []int{1, 3, 0, 5}

ch := make(chan int)

for _, value := range tab {

go func(val int){

time.Sleep( int64(val)*10000000 )

fmt.Println(val)

ch <-val

}(value)

}

for _ = range tab {

<-ch

}

}

希望本文所述对大家的Go语言程序设计有所帮助,

篇4:Go语言实现顺序存储的线性表实例

作者:OSC首席键客 字体:[增加 减小] 类型:转载

代码如下:

代码如下:

/////////

// 顺序存储线性表

////////

package main

import “fmt”

const MAXSIZE = 20 //定义数组长度

//定义线性表结构

type List struct {

Element [MAXSIZE]int //存储线性表元素的数组

length int         //线性表长度

}

//初始化线性表,d:初始化的元素, l位置

func (l *List) InitList(d int, p int) {

l.Element[p] = d

l.length++

}

//插入元素

//d:插入的数据

//p:插入位置

func (l *List) Insert(d int, p int) bool {

if p < 0 || p >= MAXSIZE || l.length >= MAXSIZE {

return false

}

if p < l.length {

for k := l.length - 1; k >= p; k-- {

l.Element[k+1] = l.Element[k]

}

l.Element[p] = d

l.length++

return true

} else {

l.Element[l.length] = d

l.length++

return true

}

}

//删除元素

//p:删除元素的位置

func (l *List) Delete(p int) bool {

if p < 0 || p > l.length || p >= MAXSIZE {

return false

}

for ; p < l.length-1; p++ {

l.Element[p] = l.Element[p+1]

}

l.Element[l.length-1] = 0

l.length--

return true

}

func main() {

var l List

i := 0

b := 1

//初始化一个线性表

for i < 15 {

l.InitList(b, i)

i++

b++

}

//插入一个元素

l.Insert(1, 13)

//删除一个元素

l.Delete(5)

fmt.Println(l)

}

希望本文所述对大家的Go语言程序设计有所帮助,

篇5:go语言base64用法实例

作者:不吃皮蛋 字体:[增加 减小] 类型:

这里展示golang base64 的一个小例子,代码如下:

代码如下:

package main

import (

“fmt”

“encoding/base64”

)

func main {

b64 := base64.NewEncoding(“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/”)

println(b64.EncodeToString([]byte(“哈哈”)))

}

发现了一个更好的办法:

代码如下:

package main

import (

“fmt”

“encoding/base64”

)

func main() {

s := []byte(“golang.org/pkg/encoding/base64/#variables”)

fmt.Printf(“%sn”, base64.StdEncoding.EncodeToString(s))

}

希望本文所述对大家的Go语言程序设计有所帮助,

篇6:go语言template用法实例

作者:不吃皮蛋 字体:[增加 减小] 类型:转载

golang的template包很好用,做一些复杂的文本格式生成太有帮助了,生成网页也是很不错的,使用起来非常方便

代码如下:

package main

import (

“fmt”

“os”

“text/template”

)

type Latlng struct {

Lat float32

Lng float32

}

func (latlng Latlng) String() string {

return fmt.Sprintf(“%g/%g”, latlng.Lat, latlng.Lng)

}

func main() {

data := []template.FuncMap{}

data = append(data, template.FuncMap{“name”:“dotcoo1”, “url”:“www.jb51.net/”, “latlng”:Latlng{24.1, 135.1}})

data = append(data, template.FuncMap{“name”:“dotcoo2”, “url”:“www.jb51.net/”, “latlng”:Latlng{24.2, 135.2}})

data = append(data, template.FuncMap{“name”:“dotcoo2”, “url”:“www.jb51.net/”, “latlng”:Latlng{24.3, 135.3}})

datatpl := `{{range .}}{{template “user” .}}{{end}}`

usertpl := `{{define “user”}}name:{{.name}}, url:{{.url}}, latlng:{{.latlng}} lat:{{.latlng.Lat}} lng:{{.latlng.Lng}}

{{end}}`

tpl, err := template.New(“data”).Parse(datatpl)

if err != nil {

panic(err)

}

_, err = tpl.Parse(usertpl)

if err != nil {

panic(err)

}

err = tpl.Execute(os.Stdout, data)

if err != nil {

panic(err)

}

println()

}

希望本文所述对大家的Go语言程序设计有所帮助,

篇7:go语言实现一个最简单的http文件服务器实例

作者:heishui 字体:[增加 减小] 类型:

代码如下:

package main

import (

“net/http”

)

func main {

http.Handle(“/”, http.FileServer(http.Dir(“./”)))

http.ListenAndServe(“:8123”, nil)

}

希望本文所述对大家的Go语言程序设计有所帮助,

篇8:GO语言实现文件上传代码

本文给大家分享的是一则使用golang实现文件上传的代码,主要是使用os.Create创建文件,io.Copy来保存文件,思路非常清晰,这里推荐给大家,有需要的小伙伴参考下吧,

功能很简单,代码也很简洁,这里就不多废话了。

代码如下:

package main

import (

“fmt”

“io”

“net/http”

“os”

)

const (

upload_path string = “./upload/”

)

func helloHandle(w http.ResponseWriter, r *http.Request) {

io.WriteString(w, “hello world!”)

}

//上传

func uploadHandle(w http.ResponseWriter, r *http.Request) {

//从请求当中判断方法

if r.Method == “GET” {

io.WriteString(w, “我的第一个页面

”)

} else {

//获取文件内容 要这样获取

file, head, err := r.FormFile(“file”)

if err != nil {

fmt.Println(err)

return

}

defer file.Close()

//创建文件

fW, err := os.Create(upload_path + head.Filename)

if err != nil {

fmt.Println(“文件创建失败”)

return

}

defer fW.Close()

_, err = io.Copy(fW, file)

if err != nil {

fmt.Println(“文件保存失败”)

return

}

//io.WriteString(w, head.Filename+“ 保存成功”)

http.Redirect(w, r, “/hello”, http.StatusFound)

//io.WriteString(w, head.Filename)

}

}

func main() {

//启动一个http 服务器

http.HandleFunc(“/hello”, helloHandle)

//上传

http.HandleFunc(“/image”, uploadHandle)

err := http.ListenAndServe(“:8080”, nil)

if err != nil {

fmt.Println(“服务器启动失败”)

return

}

fmt.Println(“服务器启动成功”)

}

以上所述就是本文的全部内容了,希望大家能够喜欢,能够对大家学习go语言有所帮助,

篇9:Python实现的几个常用排序算法实例

最近更 新

python二叉树遍历的实现方法

python解决字典中的值是列表问题的方法

python实现的二叉树算法和kmp算法实例

python 获取et和excel的版本号

python cookielib 登录人人网的实现代码

python抓取京东价格分析京东商品价格走势

linux系统使用python监测网络接口获取网络

python中查找excel某一列的重复数据 剔除

python Django连接MySQL数据库做增删改查

Python操作json数据的一个简单例子

热 点 排 行

Python入门教程 超详细1小时学会

python 中文乱码问题深入分析

比较详细Python正则表达式操作指

Python字符串的encode与decode研

Python open读写文件实现脚本

Python enumerate遍历数组示例应

Python 深入理解yield

Python+Django在windows下的开发

python 文件和路径操作函数小结

python 字符串split的用法分享

篇10:Go语言实现冒泡排序、选择排序、快速排序及插入排序的方法

作者:books1958 字体:[增加 减小] 类型:转载

这篇文章主要介绍了Go语言实现冒泡排序、选择排序、快速排序及插入排序的方法,以实例形式详细分析了几种常见的排序技巧与实现方法,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了Go语言实现冒泡排序、选择排序、快速排序及插入排序的方法,分享给大家供大家参考。具体分析如下:

算法是程序的灵魂,而排序算法则是一种最基本的算法。排序算法有许多种,这里介绍4中排序算法:冒泡排序,选择排序,快速排序和插入排序,以从小到大为例。

一、冒泡排序

冒泡排序的原理是,对给定的数组进行多次遍历,每次均比较相邻的两个数,如果前一个比后一个大,则交换这两个数。经过第一次遍历之后,最大的数就在最右侧了;第二次遍历之后,第二大的数就在右数第二个位置了;以此类推。

代码如下:

//冒泡排序(排序10000个随机整数,用时约145ms)

func bubbleSort(nums []int) {

for i := 0; i < len(nums); i++ {

for j := 1; j < len(nums)-i; j++ {

if nums[j] < nums[j-1] {

//交换

nums[j], nums[j-1] = nums[j-1], nums[j]

}

}

}

}

二、选择排序

选择排序的原理是,对给定的数组进行多次遍历,每次均找出最大的一个值的索引。

代码如下:

//选择排序(排序10000个随机整数,用时约45ms)

func selectSort(nums []int) {

length := len(nums)

for i := 0; i < length; i++ {

maxIndex := 0

//寻找最大的一个数,保存索引值

for j := 1; j < length-i; j++ {

if nums[j] > nums[maxIndex] {

maxIndex = j

}

}

nums[length-i-1], nums[maxIndex] = nums[maxIndex], nums[length-i-1]

}

}

三、快速排序

快速排序的原理是,首先找到一个数pivot把数组‘平均‘分成两组,使其中一组的所有数字均大于另一组中的数字,此时pivot在数组中的位置就是它正确的位置。然后,对这两组数组再次进行这种操作。

代码如下:

//快速排序(排序10000个随机整数,用时约0.9ms)

func quickSort(nums []int) {

recursionSort(nums, 0, len(nums)-1)

}

func recursionSort(nums []int, left int, right int) {

if left < right {

pivot := partition(nums, left, right)

recursionSort(nums, left, pivot-1)

recursionSort(nums, pivot+1, right)

}

}

func partition(nums []int, left int, right int) int {

for left < right {

for left < right && nums[left] <= nums[right] {

right--

}

if left < right {

nums[left], nums[right] = nums[right], nums[left]

left++

}

for left < right && nums[left] <= nums[right] {

left++

}

if left < right {

nums[left], nums[right] = nums[right], nums[left]

right--

}

}

return left

}

四、插入排序

插入排序的原理是,从第二个数开始向右侧遍历,每次均把该位置的元素移动至左侧,放在放在一个正确的位置(比左侧大,比右侧小),

代码如下:

//插入排序(排序10000个整数,用时约30ms)

func insertSort(nums []int) {

for i := 1; i < len(nums); i++ {

if nums[i] < nums[i-1] {

j := i - 1

temp := nums[i]

for j >= 0 && nums[j] > temp {

nums[j+1] = nums[j]

j--

}

nums[j+1] = temp

}

}

}

通过多次测试可以发现,快速排序是效率最高的。

希望本文所述对大家的Go语言程序设计有所帮助。

Python实现的几个常用排序算法实例

go语言制作端口扫描器

Go语言服务器开发之简易TCP客户端与服务端实现方法

Python实现高效求解素数代码实例

链表的c语言实现⑤

go是什么意思

高中数学教案《排序》

排序算法总结

与go的短语

Go to the Bookshop 去书店

Go语言实现选择法排序实例(精选10篇)

欢迎下载DOC格式的Go语言实现选择法排序实例,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式
点击下载本文文档