簡體   English   中英

排序復雜性

[英]Sorting complexity

給定一個數組,其中偶數索引中的值是遞增的,而奇數索引中的值是遞減順序。 例如:

[1,99,16,65,45,23,97]

我想過兩種不同的排序方法:

  1. 從i = 0開始,j = a.length-2並且將a [i]的值與a [j]進行比較。 如果a [i]較小,則i + = 2;如果[j]較小,則i = = 2。 需要一個額外的陣列。 時間是O(n),空間是O(n)。

  2. 顛倒其索引為奇數的元素的順序,然后對整個數組進行冒泡排序。 空間是O(1)..時間怎么樣?

哪個更有效率? 每種情況的最壞情況時間和空間復雜度是多少? 冒泡排序可能需要更長時間,不是嗎?

在現實世界的場景中,我還沒有看到泡泡排序的一個很好的用例。 如果您使用選項2,一旦您在奇數索引中翻轉單元格,您就有一個可能或可能不會對其進行排序的數組,並應用O(n 2 )冒泡排序。 一個微不足道的改進是使用快速排序或合並排序並獲得O(n log(n))時間復雜度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM