簡體   English   中英

在比較算法排序的迭代次數中,您是否包括步驟?

[英]do you include the step before a comparison is made in the number of iterations a sorting algorithm takes?

正如問題所指出的,我有點空白。 當您計算算法要完成的步驟數時,是否需要包括尚未進行比較的步驟?

例如:

如果您有清單: 5,3,7

然后對它執行氣泡排序。 它會;

1)比較53並將它們交換為5>3 現在的清單是3,5,7

2)比較57 ,因為5<7不變。 現在的清單是3,5,7

3)比較35 ,沒有預期的變化。 清單仍然是3,5,7

4)比較57 ,沒有預期的變化。 清單仍然是3,5,7

現在進行的迭代次數是4還是5? ...或者我完全錯了嗎?

謝謝

您執行了4 次迭代 這就是為什么迭代次數為4的原因。

Algorithm

//... some precondition steps

iteration( for... )  {       <
  //...                      < iteration steps
}                            <

恕我直言,在尚未執行任何步驟的時間點,步驟數=0。執行完一個步驟后,步驟數=1。我真的不知道如何達到執行4個步驟的目的。被認為是五個..

無論如何,請記住,通常將其分析為O(f(n)),其中與N無關的術語(如+-常數)即+ -1或+ -100會被簡單地刪除。

有時有助於查看/考慮代碼:(摘自Wikipedia

procedure bubbleSort( A : list of sortable items )
   repeat     
     swapped = false
     for i = 1 to length(A) - 1 inclusive do:
       // this is the start of an iteration
       if A[i-1] > A[i] then
         swap( A[i-1], A[i] )
         swapped = true
       end if
       // this is the end of an iteration
     end for
   until not swapped
end procedure

基於以上所述,應該很容易看出,我們僅在進行比較時才計算一次迭代。

因此將是4次迭代。


從技術上講,您還可以根據repeat ... until循環來討論迭代,這將為您帶來完全不同的結果。

而且,“步驟”當然可以分為許多較小的部分。

對於與上述相似的歧義,我們傾向於使用big-O表示法 ,這實際上只是給了我們算法運行時間的增長速度。

暫無
暫無

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

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