go 排序和查詢

2021-10-02 21:51:04 字數 3866 閱讀 7561

排序是將一組資料,依指定的順序進行排列的過程

氣泡排序(bubble sorting)的基本思想:通過對待排序序列從後向前(從下標較大的元素開始),依次比較相鄰元素的排序碼,若發現逆序則交換,使排序碼較小的元素逐漸從後部移向前部(從下標較大的單元移向下標較小的單元),就像水底下的氣泡一樣逐漸向上冒

因為排序的過程中,各元素不斷接近自己的位置,如果一趟比較下來沒有進行過交換,就說明序列有序,因此要在排序過程中設定乙個標誌flag判斷元素是否進行過交換。從而減少不必要的比較(優化)

}在golang中,我們常用的查詢有兩種:

順序查詢

二分查詢(該陣列是有序)

案例:有乙個數列: 白眉鷹王、金毛獅王、紫衫龍王、青冀蝠王

猜數遊戲:從鍵盤中任意輸入乙個名稱,判斷數列中是否包含此名稱【順序查詢】

package main

import

"fmt"

func

main()

var heroname =

"" fmt.

println

("請輸入要查詢的人名: "

) fmt.

scanln

(&heroname)

for i :=

0; i <

len(names)

; i++

if i ==

len(names)-1

}}

package main

import

"fmt"

func

main()

var heroname =

"" fmt.

println

("請輸入要查詢的人名: "

) fmt.

scanln

(&heroname)

index :=-1

for i :=

0; i <

len(names)

; i++

}if index ==-1

else

}

請對乙個有序陣列進行二分查詢, 輸入乙個數看看該陣列是否存在此數,並且求出下標,如果沒有就提示"沒有這個數"

middle := (leftindex + rightindex) / 2

arr[middle] > findval —> leftindex – middle -1

arr[middle] < findval —> middle + 1 – rightindex

arr[middle] == findval 找到了

if leftindex > rightindex 找不到

package main

import

"fmt"

func

binaryfind

(arr *[6

]int

, leftindex int

, rightindex int

, findval int

) middle :=

(leftindex + rightindex)/2

if(*arr)

[middle]

> findval

elseif(

*arr)

[middle]

< findval

else

}func

main()

binaryfind

(&arr,0,

len(arr)-1

,8)}

package main

import

"fmt"

func

main()

fmt.

println()

}}

執行結果

0 0 0 0 0 0 

0 0 1 0 0 0

0 2 0 3 0 0

0 0 0 0 0 0

語法

var 陣列名 [大小]

[大小]型別

var 陣列名 [大小]

[大小]型別 =

[大小]

[大小]型別,}

var 陣列名 [大小]

[大小]型別 =

[...

][大小]型別,}

var 陣列名 =

[大小]

[大小]型別,}

var 陣列名 =

[...

][大小]型別,}

//預設值 int型別就是 0

package main

import

"fmt"

func

main()

,}fmt.

println

("arr3="

, arr3)

}

package main

import

"fmt"

func

main()

,}for i :=

0; i <

len(arr3)

; i++

fmt.

println()

}for i, v :=

range arr3

fmt.

println()

}for

_, v :=

range arr3

fmt.

println()

}}

定義二維陣列,用於儲存三個班,每個班五名同學的成績,並求出每個班平均分、以及所有班級平均分

package main

import

"fmt"

func

main()

} totolsum :=

0.0for i :=

0; i <

len(scores)

; i++

totolsum += sum

fmt.

printf

("第%v班的平均成績為%v\n"

, i +

1, sum /

float64

(len

(scores[i]))

)}fmt.

printf

("所有班的平均成績為%v\n"

, totolsum /15)

}

Go語言排序和查詢

排序操作主要都在 sort包中,匯入就可以使用了,import sort sort.ints對整數進行排序,sort.strings對字串進行排序,sort.float64s對浮點數進行排序 package main import fmt sort func testsort var sot str...

Go語言核心程式設計 08排序和查詢

8.2 查詢 8.3 二維陣列 8.1.1 排序的介紹 排序的分類 8.1.2 氣泡排序package main import fmt func bubblesort arr 5 int fmt.println 排序後 arr arr func main bubblesort arr fmt.pri...

查詢和排序

二分查詢演算法 def search list,m low 0 high len list 1 while low high mid low high 2 if list mid m high mid 1 elif list mid m low mid 1 else return mid retur...