[英]Sorting complexity
給定一個數組,其中偶數索引中的值是遞增的,而奇數索引中的值是遞減順序。 例如:
[1,99,16,65,45,23,97]
我想過兩種不同的排序方法:
從i = 0開始,j = a.length-2並且將a [i]的值與a [j]進行比較。 如果a [i]較小,則i + = 2;如果[j]較小,則i = = 2。 需要一個額外的陣列。 時間是O(n),空間是O(n)。
顛倒其索引為奇數的元素的順序,然后對整個數組進行冒泡排序。 空間是O(1)..時間怎么樣?
哪個更有效率? 每種情況的最壞情況時間和空間復雜度是多少? 冒泡排序可能需要更長時間,不是嗎?
在現實世界的場景中,我還沒有看到泡泡排序的一個很好的用例。 如果您使用選項2,一旦您在奇數索引中翻轉單元格,您就有一個可能或可能不會對其進行排序的數組,並應用O(n 2 )冒泡排序。 一個微不足道的改進是使用快速排序或合並排序並獲得O(n log(n))時間復雜度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.