1.冒泡排序
rand.Seed(time.Now().UnixNano())
var a [10]int
n := len(a)
for i := 0; i < n; i++ {
a[i] = rand.Intn(100)
fmt.Println(a[i])
}
for i := 0; i < n-1; i++ {
for j := 0; j < n-1-i; j++ {
if a[j] > a[j+1] {
a[j], a[j+1] = a[j+1], a[j]
}
}
}
fmt.Println(a)
2. 选择排序
package main
import "fmt"
func Selectsort(arr *[6]int) {
for j := 0; j < len(arr); j++ {
max := arr[j]
maxIndex := j
for i := j + 1; i < len(arr); i++ {
if max < arr[i] {
max = arr[i]
maxIndex = i
}
}
if maxIndex != j {
arr[j], arr[maxIndex] = arr[maxIndex], arr[j]
}
fmt.Printf("第%d次 %v\n", j+1, *arr)
}
}
func main() {
arr := [6]int{10, 34, 89, 24, 65, 79}
fmt.Println(arr)
Selectsort(&arr)
}
3.插入排序
package main
import "fmt"
func Insertsort(arr *[6]int) {
for i := 1; i < len(arr); i++ {
insertVal := arr[i]
inserIndex := i - 1
for inserIndex >= 0 && arr[inserIndex] < insertVal {
arr[inserIndex+1] = arr[inserIndex]
inserIndex--
}
if inserIndex+1 != i {
arr[inserIndex+1] = insertVal
}
fmt.Printf("第%d次插入后%v\n", i, *arr)
}
}
func main() {
arr := [6]int{10, 34, 89, 24, 65, 79}
fmt.Println(arr)
Insertsort(&arr)
}
4.快速排序
package main
import "fmt"
func Quicksort(left int, right int, array *[7]int) {
l := left
r := right
pivot := array[(left+right)/2]
temp := 0
for l < r {
for array[l] < pivot {
l++
}
for array[r] > pivot {
r--
}
if l >= r {
break
}
temp = array[l]
array[l] = array[r]
array[r] = temp
if array[l] == pivot {
r--
}
if array[r] == pivot {
l++
}
}
if l == r {
l++
r--
}
if left < r {
Quicksort(left, r, array)
}
if right > l {
Quicksort(l, right, array)
}
}
func findKthLargest(arr []int,k int) int {
return findK(arr, k, 0, len(arr)-1)
}
func findK(array []int, k, start, end int) int {
l := start
r := end
pivot := array[l]
for l < r {
for l < r && array[r] <= pivot {
r--
}
array[l] = array[r]
for l < r && array[l] >= pivot {
l++
}
array[r] = array[l]
}
array[r] = pivot
if r == k-1 {
return pivot
} else if r > k-1 {
return findK(array, k, start, r-1)
} else {
return findK(array, k, r+1, end)
}
}
func main() {
arr := []int{10, 34, 89, 24, 65, -5, 79}
k := findKthLargest(arr,1)
fmt.Println(k)
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-19025.html