例如:
func main(){
**var arrayTest []int
for i:=1; i < 100; i++ {
arrayTest[i] = rand.Intn(100)
}**
mergeSort(arrayTest,0,len(arrayTest)-1)
}
func mergeSort(arrayTest int[],i int,length int){
..........
}
运行时 为什么会报 panic: runtime error: index out of range ?该如何写 第一句
我把第一句改成 var arrayTest [100]int 后 mergeSort(arrayTest int[],i int,length int)必须改为mergeSort(arrayTest int[100],i int,length int)才行,但是这样又排不了序
请教大神!!!
func main() {
var tempArray [n]int
for i:=0; i < n; i++ {
tempArray[i] = rand.Intn(n)+1
}
arrayTest := tempArray[0:n]
fmt.Println("Start to Sort:")
//Run sort algorithms
fmt.Println( "MergeSort:" )
mergeSort(arrayTest,0,len(arrayTest)-1)
}
我看了下 改成这样就可以了
func main() {
var tempArray [n]int
for i:=0; i < n; i++ {
tempArray[i] = rand.Intn(n)+1
}
arrayTest := tempArray[0:n]
fmt.Println("Start to Sort:")
//Run sort algorithms
fmt.Println( "MergeSort:" )
mergeSort(arrayTest,0,len(arrayTest)-1)
}
mergeSort中传的参数是数组引用或切片 要满足要求的话,直接把初始化的数组tempArray[i]转成切片就可以了:arrayTest := tempArray[0:n]
arrayTest := meke([]int,100)
package main
import (
"math/rand"
)
func main() {
var arrayTest []int
for i := 1; i < 100; i++ {
arrayTest[i] = rand.Intn(100)
}
mergeSort(arrayTest[0:100], 0, len(arrayTest)-1)
}
func mergeSort(arrayTest []int, i int, length int) {
//..........
}
没有申明数组大小,只需要调用mergeSort时,传切片.