冒泡排序、选择排序、插入排序、快速排序-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、运行结果:
冒泡排序、选择排序、插入排序、快速排序-Go语言版_第1张图片

三、选择排序

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、运行结果:
冒泡排序、选择排序、插入排序、快速排序-Go语言版_第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、运行结果:
冒泡排序、选择排序、插入排序、快速排序-Go语言版_第3张图片

五、快速排序

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、运行结果:
冒泡排序、选择排序、插入排序、快速排序-Go语言版_第4张图片

原创不易,点赞鼓励一下吧!

你可能感兴趣的:(数据结构与算法,Go,编程语言,Go语言,常见排序算法,冒泡排序,插入排序,选择排序,快速排序)