Go語言程式實現基數排序對浮點數進行排序


在本文中,我們將編寫 Go 語言程式來實現基數排序以對浮點數進行排序。基數排序通常用於對整數進行排序,它也可以用於對浮點數進行排序。它根據專案的特定位或數字進行排序。本文提供了一種使用浮點數表示對浮點數進行排序的有效方法。

演算法

  • 步驟 1 - 將浮點數轉換為可排序格式

  • 步驟 2 - 對每個數字位置執行基數排序

  • 步驟 3 - 根據當前數字位置對整數進行排序

  • 步驟 4 - 對每個數字位置重複步驟 3

  • 步驟 5 - 將排序後的表示形式還原為浮點數

語法

func range(variable)

range 函式迭代任何資料型別。要利用它,首先鍵入 range 關鍵字後跟我們要迭代到的資料型別,迴圈將迭代直到變數的最後一個元素。

func make ([] type, size, capacity)

Go 中的 make 函式用於構建陣列/對映。它接收要生成的變數的型別以及其大小和容量作為引數。

示例 1:使用字串轉換

在本文中,我們將編寫一個 Golang 示例來實現基數排序以對浮點數進行排序。此方法涉及字串轉換,將浮點數轉換為字串,然後使用 sort.string() 函式對字串進行排序。

package main

import (
	"fmt"
	"sort"
	"strconv"
)

func radixSort(numbers []float64) {
	strings := make([]string, len(numbers))
	for i, num := range numbers {
		strings[i] = strconv.FormatFloat(num, 'f', -1, 64)
	}

	sort.Strings(strings)

   for i, str := range strings {
		num, _ := strconv.ParseFloat(str, 64)
		numbers[i] = num
	}
}

func main() {
	numbers := []float64{3.14, 2.718, 1.618, 4.669, 0.577}
	radixSort(numbers)
	fmt.Println("Sorted numbers:", numbers)
}

輸出

Sorted numbers: [0.577 1.618 2.718 3.14 4.669]

示例 2:使用二進位制表示

在本文中,我們將編寫一個 Golang 示例來實現基數排序以對浮點數進行排序。此方法涉及二進位制表示,將浮點數轉換為二進位制,然後對其進行排序。

package main

import (
	"fmt"
	"sort"
)

func radixSort(numbers []float64) {
	binary := make([]string, len(numbers))
	for i, num := range numbers {
		binary[i] = fmt.Sprintf("%064b", num)
	}

	sort.Strings(binary)

	for i, str := range binary {
		var num float64
		fmt.Sscanf(str, "%b", &num)
		numbers[i] = num
	}
}

func main() {
	numbers := []float64{3.14, 2.718, 1.618, 4.669, 0.577}
	radixSort(numbers)
	fmt.Println("Sorted numbers:", numbers)
}

輸出

Sorted numbers: [0.577 4.669 2.718 3.14 1.618]

結論

在本文中,我們討論瞭如何實現基數排序以對字串進行排序。我們已經使用字串轉換和二進位制表示實現了此操作。每種方法都簡單明瞭,可以根據手頭問題的需求隨時使用。

更新於: 2023年7月6日

330 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.