冒泡排序、選擇排序、插入排序、快速排序-Go語言版

一、小序

自己夠強纔是王道!最近寫的技術博客少了,一是工作比較忙,二是一直在忙着給自己充電。在忙着提高自己的技術,這段時間又重啓了Go語言的學習計劃,之前瞭解過Go語言,也學習過一段時間,時間久了忘得也差不多了,最近在慢慢撿起來,慢慢在進階學習。這幾種算法就是在學習Go語言的過程中用來練手的,順便分享一下。這幾種算法的原理不再說明了,之前也寫過C++版的,原理都在這裏,感興趣C++版的可以移步看一下:https://blog.csdn.net/toby54king/category_8301699.html

二、冒泡排序

1、實現代碼

package main

import "fmt"

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

func main() {
	tmpArr := [...]int{0, 4, 3, 5, 6, 7, 9, 8, 2, 1}
	fmt.Println("-------冒泡排序前-------")
	fmt.Println(tmpArr)
	// 冒泡排序
	bubbleSort(tmpArr[:])
	fmt.Println("-------冒泡排序後-------")
	fmt.Println(tmpArr)
}

2、運行結果:
在這裏插入圖片描述

三、選擇排序

1、實現代碼

package main

import "fmt"

func selectSort(data []int) {
	for i := 0; i < len(data)-1; i++ {
		var min int = i
		for j := i + 1; j < len(data); j++ {
			if data[j] < data[min] {
				min = j
			}
		}
		data[min], data[i] = data[i], data[min]
	}
}

func main() {
	tmpArr := [...]int{0, 4, 3, 5, 6, 7, 9, 8, 2, 1}
	fmt.Println("-------選擇排序前-------")
	fmt.Println(tmpArr)
	// 選擇排序
	selectSort(tmpArr[:])
	fmt.Println("-------選擇排序後-------")
	fmt.Println(tmpArr)
}

2、運行結果:
在這裏插入圖片描述

四、插入排序

1、實現代碼

package main

import "fmt"

func insertSort(data []int) {
	for i := 1; i < len(data); i++ {
		for j := i; j > 0; j-- {
			if data[j] > data[j-1] {
				break
			}
			data[j], data[j-1] = data[j-1], data[j]
		}
	}
}

func main() {
	tmpArr := [...]int{0, 4, 3, 5, 6, 7, 9, 8, 2, 1}
	fmt.Println("-------插入排序前-------")
	fmt.Println(tmpArr)
	// 插入排序
	insertSort(tmpArr[:])
	fmt.Println("-------插入排序後-------")
	fmt.Println(tmpArr)
}

2、運行結果:
在這裏插入圖片描述

五、快速排序

1、實現代碼

package main

import "fmt"

func quickSort(data []int, left, right int) {
	if left >= right {
		return
	}

	tmpVal := data[left]
	mid := left
	// 劃分數組,確定tmpVal的位置
	for i := left + 1; i <= right; i++ {
		// 從小到大排序,改爲>則從大到小
		if data[i] < tmpVal {
			data[mid], data[i] = data[i], data[mid+1]
			mid++
		}
	}

	data[mid] = tmpVal
	quickSort(data, left, mid-1)
	quickSort(data, mid+1, right)
}

func main() {
	tmpArr := [...]int{0, 4, 3, 5, 6, 7, 9, 8, 2, 1}
	fmt.Println("-------快速排序前-------")
	fmt.Println(tmpArr)
	// 快速排序
	quickSort(tmpArr[:], 0, len(tmpArr)-1)
	fmt.Println("-------快速排序後-------")
	fmt.Println(tmpArr)
}

2、運行結果:
在這裏插入圖片描述

原創不易,點贊鼓勵一下吧!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章