第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

對整數(shù)切片進行排序

對整數(shù)切片進行排序

Go
慕無忌1623718 2022-06-01 15:09:01
我的意圖是對 ints 切片中給出的值進行排序。我不想使用 sort 包,想實現(xiàn) sort 功能。問題是當我嘗試使用索引來比較切片元素時,我得到了越界錯誤。修改切片的正確方法是什么?func sortSlice( sli []int ) {   j := 0   i := 1   for range sli {        if( sli[j] > sli[j+1] ) {            var  temp int  = sli[j];            sli[i] = sli[j]            sli[j] = temp        }        j++    }}
查看完整描述

2 回答

?
呼啦一陣風

TA貢獻1802條經(jīng)驗 獲得超6個贊

range過度sli意味著你迭代len(sli)次數(shù)所以j0len(sli)-1。現(xiàn)在您將 elementj與 element進行比較j+1。對于最后一次迭代,這意味著您將 elementlen(sli)-1與 element進行比較len(sli)。最后一個索引是問題所在。沒有元素len(sli),因為sli的索引從0len(sli)-1。

另請注意,在 Go 中,您可以說sli[i], sli[j] = sli[j], sli[i]交換兩個項目。也就是說,您的代碼無法工作,因為在任何i地方都沒有定義。

問題列表中的下一個問題是,這并不是我認為你想要的所有冒泡算法。您只對切片進行一次迭代,但這不會對其進行排序。您將不得不重復您擁有的循環(huán),直到不再發(fā)生交換。


查看完整回答
反對 回復 2022-06-01
?
慕尼黑的夜晚無繁華

TA貢獻1864條經(jīng)驗 獲得超6個贊

如果我理解正確,您想做自定義實現(xiàn),但不確定為什么不想使用sortpackage.json 。您可以通過覆蓋進行自定義排序go#interface。


例如


您可以在 go 中編寫自定義排序并使用 sort 包調(diào)用它。基本上您可以覆蓋界面的排序功能,并可以根據(jù)您的需要更改行為。您可以按照下面的示例創(chuàng)建一個接收數(shù)據(jù)的結(jié)構(gòu)并覆蓋函數(shù) Len() 、 Swap() 、 Less()


type Sortslice struct {

    Sli []int

}


func (s Sortslice) Len() int {

    return len(s.Sli)

}


func (s Sortslice) Swap(i, j int) {

    s.Sli[i], s.Sli[j] = s.Sli[j], s.Sli[i]

}


func (s Sortslice) Less(i, j int) bool {

    if s.Sli[i] > s.Sli[j] {

        return true

    } else {

        return false

    }

}

構(gòu)建結(jié)構(gòu)后,您可以將數(shù)據(jù)傳遞到其中并使用 sort.sort() 函數(shù)在 [] 接口上調(diào)用 sort 方法。這將使用您的邏輯對切片進行排序。


var data = []int{5,6,8,1,9,10}

sortedSlice := Sortslice{data}   

sort.Sort(sortedSlice);

最好使用它,sort.Sort因為它關(guān)心做什么(使用合并排序,快速排序)。


但是,如果您想自己做所有事情,請遵循sort.sort()的源代碼并以類似的方式編寫您的自定義內(nèi)容


來源:https ://yourbasic.org/golang/how-to-sort-in-go/


查看完整回答
反對 回復 2022-06-01
  • 2 回答
  • 0 關(guān)注
  • 114 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號