1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
| package main
import ( "fmt" "math/rand" "sort" "time" )
var r = rand.New(rand.NewSource(time.Now().UnixNano()))
func getArray(size, maxValue int, flag bool) []int { arr := make([]int, size) nega := 0
if flag { nega = -maxValue }
for i := 0; i < size; i++ { arr[i] = r.Intn(maxValue-nega) + nega }
return arr }
func isEqual(arr1, arr2 []int) bool { if len(arr1) != len(arr2) { return false } for i := range arr1 { if arr1[i] != arr2[i] { return false } } return true }
func bubbleSort(arr []int) { n := len(arr) for i := n - 1; i > 0; i-- { for j := 0; j < i; j++ { if arr[j] > arr[j+1] { arr[j], arr[j+1] = arr[j+1], arr[j] } } } }
func selectSort(arr []int) { n := len(arr) for i := 0; i < n-1; i++ { min := i for j := i + 1; j < n; j++ { if arr[j] < arr[min] { min = j } } arr[i], arr[min] = arr[min], arr[i] } }
func quickSort(arr []int, left, right int) { if left >= right { return } i, j := left, right p := arr[i] for i < j { for i < j && arr[j] >= p { j-- } arr[i] = arr[j] for i < j && arr[i] <= p { i++ } arr[j] = arr[i] } arr[i] = p quickSort(arr, left, i-1) quickSort(arr, i+1, right) }
func insertSort(arr []int) { n := len(arr) for i := 0; i < n-1; i++ { for j := i; j >= 0 && arr[j] > arr[j+1]; j-- { arr[j], arr[j+1] = arr[j+1], arr[j] } } }
func main() { size, maxValue, testTime := 100, 100, 100000 flag := true for i := 0; i < testTime; i++ { arr := getArray(size, maxValue, false) arr1 := make([]int, size) copy(arr1, arr)
insertSort(arr)
sort.Ints(arr1) flag = isEqual(arr, arr1) if !flag { break } } fmt.Println(flag) }
|