go語言實現排序 交換排序

2021-09-12 05:23:14 字數 822 閱讀 9281

氣泡排序更是入門級級別的排序方法,不多說什麼了,時間複雜度(最好 o(n),最壞o(n^2)),空間複雜度:o(1)

**:

func maopao(nums int ,n int) int

} if flag==false

} return nums

}

注意:一定要設定乙個flag來確定還有沒有發生交換,不要做無用的比較

快速排序之所比較快,因為相比氣泡排序,每次交換是跳躍式的。每次排序的時候設定乙個基準點,將小於等於基準點的數全部放到基準點的左邊,將大於等於基準點的數全部放到基準點的右邊。這樣在每次交換的時候就不會像氣泡排序一樣每次只能在相鄰的數之間進行交換,交換的距離就大的多了。因此總的比較和交換次數就少了,速度自然就提高了。當然在最壞的情況下,仍可能是相鄰的兩個數進行了交換。因此快速排序的最差時間複雜度和氣泡排序是一樣的都是o(n2),它的平均時間複雜度為o(nlogn)。

如果大家對快速不是很理解的話,可以去找一下過程的那種**,非常清楚

**:

func quicksort(nums int ,left,right int)

i:=sort1(nums,left,right)

quicksort(nums,left,i-1)

quicksort(nums,i+1,right)

}func sort1(nums int,left,right int)int

for nums[i]<=temp && iif i} nums[left]=nums[i]

nums[i]=temp

return i

}

排序 交換排序

交換排序 利用交換位置進行排序 1 演算法思想 重複的走訪要排序的元素,依次比較相鄰兩個元素的大小,如果順序錯誤則交換這兩個元素的位置,直到不需要在比較 2 步驟 比較相鄰兩個元素,如果前乙個比後乙個大,則交換位置 從第乙個元素一直比較到最後乙個元素,這時最後乙個元素的值是最大的 減掉最後乙個元素,...

go語言實現排序 選擇排序

大家都知道我們一般不會用直接選擇排序,因為時間複雜度比較高,相信大家對直接插入排序都不陌生,就是每次確定乙個當前的最小值或者最大值,我也在這個基礎上進行了一點小改進,即每次都確定乙個最大值和最小值 func selectsort nums int,n int int nums min nums fi...

交換排序演算法實現

include template void swap elem a,int p1,int p2 template void print elem a,int length template void bub sort elem a,int length template void insert so...