So sortieren Sie Golang

王林
Freigeben: 2023-05-22 13:18:07
Original
771 Leute haben es durchsucht

golang ist eine moderne Programmiersprache, die aufgrund ihrer Parallelitätsfähigkeiten und effizienten Speicherverwaltung in vielen Bereichen weit verbreitet ist. In Golang ist das Sortieren eine der häufigsten Operationen, und der Sortieralgorithmus ist auch eine relativ grundlegende Datenstruktur und ein relativ grundlegender Algorithmus.

golang bietet einige integrierte Sortierfunktionen, z. B. die allgemeine sort.Ints im Sortierpaket, mit der ganzzahlige Slices sortiert werden können. Darüber hinaus können wir sort.Strings auch zum Sortieren von String-Slices verwenden. In einigen Szenarien müssen wir jedoch unsere eigene Sortierfunktion schreiben, um bestimmte Sortieranforderungen zu erfüllen. In diesem Fall müssen wir den von Golang bereitgestellten Sortieralgorithmus und die Sortiermethode verstehen.

  1. Eingebaute Sortierfunktion

Die in Golang bereitgestellten Sortierfunktionen sind sehr praktisch, z. B. sort.Ints und sort.Strings von das Sortierpaket. Sehr häufig. Das Folgende ist ein Beispiel für die Verwendung von sort.Ints zum Sortieren:

package main

import (
    "fmt"
    "sort"
)

func main() {
    nums := []int{3, 2, 1, 4, 5, 7, 6}
    sort.Ints(nums)
    fmt.Println(nums)
}
Nach dem Login kopieren

Das Ausgabeergebnis ist: [1 2 3 4 5 6 7]

Wir können auch sort verwenden. Strings Sortierung von Strings:

package main

import (
    "fmt"
    "sort"
)

func main() {
    strs := []string{"a", "c", "b", "d", "f", "e"}
    sort.Strings(strs)
    fmt.Println(strs)
}
Nach dem Login kopieren

Das Ausgabeergebnis ist: [a b c d e f]

  1. Blasensortierungsalgorithmus

Risiko Die Blasensortierung ist ein grundlegender Sortieralgorithmus und relativ einfach zu verstehen und zu implementieren. Das Grundprinzip besteht darin, benachbarte Elemente zu vergleichen und die Positionen zu tauschen. Nach einer Sortierrunde erreicht der Maximal- oder Minimalwert das Ende der Sequenz. Das Folgende ist der mit go implementierte Blasensortierungsalgorithmus:

package main

import "fmt"

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

func main() {
    nums := []int{3,2,1,4,5,7,6}
    bubbleSort(nums)
    fmt.Println(nums)
}
Nach dem Login kopieren

Das Ausgabeergebnis ist: [1 2 3 4 5 6 7]

  1. Schnellsortierungsalgorithmus# 🎜 🎜#
Schnellsortierung ist ein weiterer gängiger Sortieralgorithmus. Das Grundprinzip besteht darin, die zu sortierende Sequenz durch einen Sortierdurchgang in zwei Teile zu teilen, wobei ein Teil kleiner als das Referenzelement ist und der andere Teil ist größer als das Referenzelement und dann Sortieren Sie diese beiden Teile schnell getrennt, um schließlich eine geordnete Reihenfolge zu erhalten. In der Go-Sprache ist die schnelle Sortierung auch relativ einfach zu implementieren. Der Code lautet wie folgt:

package main

import "fmt"

func quickSort(nums []int) []int {
    if len(nums) <= 1 {
        return nums
    }

    pivot := nums[0]
    var left, right []int
    for _, num := range nums[1:] {
        if num < pivot {
            left = append(left, num)
        } else {
            right = append(right, num)
        }
    }

    left = quickSort(left)
    right = quickSort(right)

    return append(append(left, pivot), right...)
}

func main() {
    nums := []int{3, 2, 1, 4, 5, 7, 6}
    nums = quickSort(nums)
    fmt.Println(nums)
}
Nach dem Login kopieren

Das Ausgabeergebnis ist: [1 2 3 4 5 6 7]

    Merge-Sortieralgorithmus
Merge-Sortierung ist ein weiterer relativ schneller Sortieralgorithmus. Das Grundprinzip besteht darin, die zu sortierende Sequenz in zwei Sequenzen aufzuteilen, sie separat zu sortieren und sie dann zusammenzuführen . Im Vergleich zum Schnellsortierungsalgorithmus erfordert die Zusammenführungssortierung keinen Elementaustausch, sodass „stabile“ Sortierergebnisse erzielt werden können. In Golang können wir Rekursion verwenden, um den Zusammenführungssortierungsalgorithmus zu implementieren. Der Code lautet wie folgt:

package main

import "fmt"

func mergeSort(nums []int) []int {
    if len(nums) <= 1 {
        return nums
    }

    mid := len(nums) / 2
    left, right := nums[:mid], nums[mid:]

    left = mergeSort(left)
    right = mergeSort(right)

    return merge(left, right)
}

func merge(left, right []int) []int {
    merged := make([]int, 0, len(left)+len(right))

    for len(left) > 0 && len(right) > 0 {
        if left[0] <= right[0] {
            merged = append(merged, left[0])
            left = left[1:]
        } else {
            merged = append(merged, right[0])
            right = right[1:]
        }
    }

    merged = append(merged, left...)
    merged = append(merged, right...)

    return merged
}

func main() {
    nums := []int{3, 2, 1, 4, 5, 7, 6}
    nums = mergeSort(nums)
    fmt.Println(nums)
}
Nach dem Login kopieren
Das Ausgabeergebnis ist: [1 2 3 4 5 6 7]

#🎜🎜 #Zusammenfassung:

In Golang können wir die integrierte Sortierfunktion verwenden, um grundlegende Sortiervorgänge durchzuführen. Für einige komplexere Sortieranforderungen können wir den entsprechenden Sortieralgorithmus auswählen, der entsprechend der spezifischen Situation implementiert wird . Zu den gängigen Sortieralgorithmen gehören Blasensortierung, Schnellsortierung und Zusammenführungssortierung. Bei der Implementierung sollte auf die Komplexität und Stabilität des Algorithmus geachtet werden.

Das obige ist der detaillierte Inhalt vonSo sortieren Sie Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!