簡體   English   中英

部分排序數組的最短時間?

[英]Minimum Time for Partially Sorted Array?

我們給出了一個部分排序的數組A,即for i=1, 2, ..., nk我們有:

A[i]<= A[i+k]

對於完全排序數組,我們至少需要O(n log k)時間。

是什么條件和解決方案使這個公理永遠是真的?

你可以從這個問題中使用shell排序。在這個算法中,在每個階段和一些增量hk之后,對於每個i,我們有一個[i]≤a[i + hk]。 間隔hk的所有元素都被排序。 據說這個數組是hk - 排序的。 shell排序的輸出是1排序的。 如果數組是k-sorted那么shell排序需要O(log k)完全排序數組。 每個階段需要O(n),然后總階數為O(n log k)。

假設我們要對這個數組進行排序:

在此輸入圖像描述

這個數組是4排序的(k = 4)。 為了對此進行分類,需要2個階段(h2 = 2,h3 = 1)因此需要兩個階段(lg 4或lg k)。 在每個階段,都有必須排序的n / k子陣列。 每個子數組排序與插入排序。 每個子數組的排序順序是O(n)。 最后,總次序O(n * lg k)= O(n log k)。

暫無
暫無

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

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