golang go語言實現十大經典排序演算法

2021-10-12 02:12:41 字數 3447 閱讀 7316

package main

import

("fmt"

"math"

)//冒泡

func

bubblesort

(a [

]int)[

]int

}if f ==

true}}

return a

}//選擇排序

func

selectionsort

(a [

]int)[

]int

} a[i]

,min=min,a[i]

}return a

}//插入排序

func

insertionsort

(a [

]int)[

]int

a[pre+1]

=cre

}return a

}//快速

func

quicksort

(a [

]int

,low,high int)[

]int

start :=a[low]

i := low

for j:=low+

1;j<=high;j++}}

a[i]

,a[low]

=a[low]

,a[i]

quicksort

(a ,low,i-1)

quicksort

(a ,i+

1,high)

return a

}//希爾排序

func

shellsort

(a [

]int)[

]int

a[j+gap]

= temp

}//重新設定間隔

gap = gap /3}

return a

}//歸併排序

func

mergesort

(a [

]int)[

]int

middle := length /

2 left := a[

0:middle]

right := a[middle:

]return

merge

(mergesort

(left)

,mergesort

(right))}

//歸併

func

merge

(left [

]int

, right [

]int)[

]int

else

}for

len(left)!=0

forlen

(right)!=0

return result

}//堆排序

func

heapsort

(a [

]int)[

]int

return a

}//建立大根堆

func

buildmaxheap

(a [

]int

, arrlen int)}

func

heapify

(a [

]int

, i, arrlen int

)if right < arrlen && a[right]

> a[largest]

if largest != i

}//計數排序

func

countingsort

(a [

]int)[

]int

for j :=

0; j < bucketlen; j++

}return a

}//桶排序

func

sort

(a [

]int)[

]int

//桶內排序

tmppos :=

0for i :=

0; i < num; i++

}return a

}//基數排序

func

radixsort

(a [

]int)[

]int

//給桶中對應的位置放資料

for i :=

0; i < count; i++

}//給桶賦值

for k :=

0; k <

len(a)

; k++

else}}

var x =0;

//出桶

for p :=

0; p <

len(bucket)

; p++

else}}

}return a

}//************************公共函式

//獲取最大值

func

getmaxinarr

(a [

]int

)int

}return max

}//交換

func

swap

(a [

]int

, i, j int

)func

main()

//冒泡

fmt.

println

(bubblesort

(a))

//快速

fmt.

println

(quicksort

(a,0

,b-1))

//選擇

fmt.

println

(selectionsort

(a))

//插入排序

fmt.

println

(insertionsort

(a))

//希爾排序

fmt.

println

(shellsort

(a))

//歸併排序

fmt.

println

(mergesort

(a))

//堆排序

fmt.

println

(heapsort

(a))

//計數排序

fmt.

println

(countingsort

(a))

//桶排序

fmt.

println

(countingsort

(a))

//基數排序

fmt.

println

(radixsort

(a))

}

C語言十大經典例題

1 輸出9 9口訣。共9行9列,i控制行,j控制列。include int main if leap 內迴圈結束後,leap依然為1,則m是素數 for i 2 i 5 i for j 1 j i 1 j a i j a i 1 j a i 1 j 1 for i 0 i 5 i return 0 ...

十大經典排序

每一次比較完就要立即交換 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。比較完所有...

佛家十大經典

佛家十大經典 經典一 一切皆為虛幻。經典二 不可說。有些話是不能說出來的。一旦失口,往往一絲脆弱的牽伴都會斷掉,縱然痛惜也 經典三 色即是空,空即是色。經典四 人生在世如身處荊棘之中,心不動,人不妄動,不動則不傷 如心動則人妄動,傷其身痛其骨,於是體會到世間諸般痛苦。經典五 一花一世界,一佛一如來。...