quicksort

    0熱度

    2回答

    我目前正試圖在JavaScript中的數組實現快速排序。我有整體佈局,但由於某種原因遞歸不起作用。它似乎已經爲代碼的第二次迭代工作,但在此之後,它似乎只是搞砸了。不知道我做錯了什麼。 function main() { var type = "quicksort" var testArray = [9, 6, 5, 0, 8, 2, 4, 7]; q

    0熱度

    1回答

    所有變量名都來自Quicksort's wikipedia page的Lomuto's和Hoare的快速排序僞代碼。 如果p就是由partition函數返回,霍爾分他從陣列到lo和p從p+1到hi,而Lomuto分他從陣列到lo和p-1從p+1到hi。 我可能是錯關於這一點,但快速排序的理念是... 以一個元素在子陣列(支點)。 以這樣的方式重新排列子陣列,即所有元素左側的元素都小於主元,並且主元

    0熱度

    1回答

    我正在研究下面的Quicksort實現(來自破解編碼採訪)。 在分區方法中,有兩個「left < = right」謂詞(在其第一個while語句和最後一個if語句中)。當left == right時,在這些索引處交換元素將與沒有交換相同,所以我認爲去除比較的「==」部分不會有任何影響。但是,當我這樣做並運行代碼而不是「right < right」時,程序將無限(在某些輸入上)遞歸併導致堆棧溢出。爲

    1熱度

    1回答

    假設我們有一個標準的雙向分區QuickSort算法,它總是在第一個元素上旋轉。但是,在QuickSort的這個輕微變體中,我們首先交換第一個和中間元素,然後在「新」第一個元素上旋轉。我的問題是,這會改變最糟糕的運行時間嗎? 我最初的想法是否定的,因爲在每個子數組中,元素仍然是相對於彼此的隨機順序,因此切換第一個和中間元素不會改變整體運行時。但是,因爲我有興趣找到最壞的情況,所以我不確定是否有一些「

    1熱度

    2回答

    我想在python中實現快速排序。問題是如何在數組a中增加/減少i/j的值。我知道我應該寫i=i+1,在python中沒有像i++這樣的東西,但我不明白我應該怎麼做。 我是新手,這是我的代碼。 def quicksort(a,lo,hi): if(hi<=lo): return i = lo - 1 j = hi v = a[hi]

    1熱度

    1回答

    性能問題我想實現在Python 3快速排序算法使用該檢查等元素分區功能。 我的解決辦法似乎工作找到關於解決方案,但是已經需要長達40秒的長度爲10的陣列^ 5,這是相當極端。 我是相當新的Python和無法檢測是什麼原因導致的代碼運行緩慢這一點。 我使用下面的代碼: import sys import random def partition3(a, l, r): # bring

    -1熱度

    1回答

    我被給了僞代碼,我幾乎有它的形式是正確的,但我不明白爲什麼它會給我一個堆棧溢出每次我嘗試在Visual Studio中快速排序。以下是我所做的功能。 template <typename T> void quickSort(T list[], int lowerBound, int upperBound) { int i = lowerBound; int j = upperBound;

    0熱度

    1回答

    我實現了一個標準的快速排序算法,並在幾次運行中對它進行測試,並將運行時間存儲在一個數組中。 int max = 100; int runs = 1000; int[] arr = new int[max]; Long[] times = new Long[runs]; while(n < runs){ for(int i =0 ; i<max; i++){ arr

    -1熱度

    1回答

    我找到了代碼。但我不明白它是如何工作的。 正如我所知的樞軸 - 它的數組中間元素。 但是這裏的樞紐是int pivot = quickSortArray[p]其中,int i = p,所以p = 0和0它不是數組的中間,可以解釋我這個嗎? public int partition(int p, int q) { int i = p; int j = q + 1; //

    1熱度

    2回答

    我正在測試它的各種分佈,並且當反向(降序)排序的數組作爲輸入時,我正在得到段錯誤。有時甚至對於反向排序的數組也行得通,有時候我會遇到分段錯誤錯誤,特別是在大的反向排序數組(> 100000)上。是否因爲遞歸調用非常深,那麼遞歸調用深度的限制是什麼,取決於什麼因素以及編寫遞歸程序時需要注意哪些預防措施。