排序是將一組資料,依指定的順序進行排列的過程
氣泡排序(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...