c语言编程笔录

您现在的位置是:首页 > 编程 > 编程经验

编程经验

Golang函数的算法和数据结构实现方法

曹敏侑 2023-09-15编程经验
算法和数据结构介绍算法和数据结构是计算机科学的两个重要领域。算法是一组步骤,用于完成特定的任务,而数据结构是组织和存储数据的方式。在Golang中,数据结构包括数组、链表、堆栈、队列、树等,而算法包

算法和数据结构介绍

算法和数据结构是计算机科学的两个重要领域。算法是一组步骤,用于完成特定的任务,而数据结构是组织和存储数据的方式。在Golang中,数据结构包括数组、链表、堆栈、队列、树等,而算法包括排序、搜索、图形、贪婪、动态编程等。


package main

import "fmt"

func main() {
    arr := []int{9, 2, 4, 7, 1}

    bubbleSort(arr)

    fmt.Println(arr)
}

func bubbleSort(arr []int) {
    n := len(arr)

    for i := 0; i < n-1; i++ {
        for j := i + 1; j < n; j++ {
            if arr[i] > arr[j] {
                arr[i], arr[j] = arr[j], arr[i]
            }
        }
    }
}

使用数组和切片

数组和切片在Golang中非常常见。数组是一组相同类型的值的集合,而切片是动态数组。使用数组和切片时,需要考虑数组的长度,以确保代码的正确性。在Golang中,可以使用range函数来循环遍历数组或切片。


package main

import "fmt"

func main() {
    arr := [5]int{1, 2, 3, 4, 5}

    for i, value := range arr {
        fmt.Println(i, value)
    }

    slice := []int{10, 20, 30}

    for i, value := range slice {
        fmt.Println(i, value)
    }
}

堆栈和队列

堆栈和队列是常用的数据结构。堆栈是一种后进先出(LIFO)的数据结构,而队列是一种先进先出(FIFO)的数据结构。在Golang中,可以使用切片结构来实现堆栈和队列的操作。对于堆栈,可以使用append函数来添加元素,使用切片的末尾元素来获取或删除元素。对于队列,可以使用append函数来添加元素,使用切片的第一个元素来获取或删除元素。


package main

import "fmt"

func main() {
    stack := []int{}

    stack = append(stack, 10)
    stack = append(stack, 20)
    stack = append(stack, 30)

    fmt.Println(stack)

    top := stack[len(stack)-1]
    stack = stack[:len(stack)-1]

    fmt.Println(top)
    fmt.Println(stack)

    queue := []int{}

    queue = append(queue, 10)
    queue = append(queue, 20)
    queue = append(queue, 30)

    fmt.Println(queue)

    front := queue[0]
    queue = queue[1:]

    fmt.Println(front)
    fmt.Println(queue)
}

排序算法

排序算法是计算机科学中常见的任务之一。在Golang中,有多种排序算法可供选择,包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。这些排序算法各有优缺点,适用于不同的场景。在Golang中,可以使用sort包来实现内置排序算法,也可以自己编写排序算法。


package main

import (
    "fmt"
    "sort"
)

func main() {
    arr := []int{9, 2, 4, 7, 1}

    // 冒泡排序
    bubbleSort(arr)

    fmt.Println(arr)

    // 快速排序
    quickSort(arr, 0, len(arr)-1)

    fmt.Println(arr)

    // 使用内置排序算法
    sort.Ints(arr)

    fmt.Println(arr)
}

func bubbleSort(arr []int) {
    n := len(arr)

    for i := 0; i < n-1; i++ {
        for j := i + 1; j < n; j++ {
            if arr[i] > arr[j] {
                arr[i], arr[j] = arr[j], arr[i]
            }
        }
    }
}

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

    pivot := arr[right]
    i := left

    for j := left; j < right; j++ {
        if arr[j] < pivot {
            arr[i], arr[j] = arr[j], arr[i]
            i++
        }
    }

    arr[i], arr[right] = arr[right], arr[i]

    quickSort(arr, left, i-1)
    quickSort(arr, i+1, right)
}

文章评论