1. 程式人生 > 其它 >Go Sort Examples

Go Sort Examples

程式碼
package main

import (
	"fmt"
	"math/rand"
	"time"
)

func bubbleSorter(integers [11]int) {

	var num = 11

	var isSwapped bool

	isSwapped = true

	for isSwapped {
		isSwapped = false
		var i int
		for i = 1; i < num; i++ {
			if integers[i-1] > integers[i] {

				var temp = integers[i]
				integers[i] = integers[i-1]
				integers[i-1] = temp
				isSwapped = true
			}

		}
	}

	fmt.Println(integers)

}

func SelectionSorter(elements []int) {

	var i int
	for i = 0; i < len(elements)-1; i++ {

		var min int
		min = i
		var j int
		for j = i + 1; j <= len(elements)-1; j++ {
			if elements[j] < elements[min] {
				min = j
			}
		}
		swap(elements, i, min)
	}

}


func swap(elements []int, i int, j int) {
	var temp = elements[j]
	elements[j] = elements[i]
	elements[i] = temp
}


func randomSequence(num int) []int {

	var sequence []int = make([]int, num)
	rand.Seed(time.Now().UnixNano())

	var i int
	for i = 0; i < num; i++ {
		sequence[i] = rand.Intn(999) - rand.Intn(999)
	}

	return sequence
}


func InsertionSorter(elements []int) {

	var n = len(elements)
	var i int

	for i = 1; i < n; i++ {

		var j int
		j = i
		for j > 0 {
			if elements[j-1] > elements[j] {
				elements[j-1], elements[j] = elements[j], elements[j-1]

			}
			j = j - 1
		}
	}

}


func main() {
	var integers [11]int = [11]int{31, 13, 12, 4, 18, 16, 7, 2, 3, 0, 10}

	fmt.Println("Bubble Sorter")
	bubbleSorter(integers)

	var elements = []int{11, 4, 18, 6, 19, 21, 71, 13, 15, 2}
	fmt.Println("Before Selection Sorting ", elements)
	SelectionSorter(elements)
	fmt.Println("After Selection  Sorting ", elements)

	var sequence []int = randomSequence(24)
	fmt.Println("\n^^^^^^ Before Insertion Sorting ^^^ \n\n", sequence)

	InsertionSorter(sequence)
	fmt.Println("\n--- After Insertion  Sorting ---\n\n", sequence)

}