quickselect

    2熱度

    1回答

    我想知道爲什麼QuickSelect應該是一個很好的執行算法,用於查找 任意元素的一個n大小的未排序的集合。我的意思是,當你逐一瀏覽所有元素時,直到找到所需的元素爲止,它會花費O(n)次比較 - 這與快速選擇的最佳情況一樣多,而且更容易。 我是否錯過了一些關於此的重要內容?與線性搜索相比,QiuckSelect的表現更好嗎?

    1熱度

    2回答

    我發現這個代碼在github中的quickselect算法,否則被稱爲order-statistics。此代碼工作正常。 我不明白medianOf3方法,它應該按排序順序排列第一個,中間和最後一個索引。但在調用medianof3方法後輸出數組時實際上不會。 我可以按照這個方法去做,除了最後一次呼叫swap(list, centerIndex, rightIndex - 1);。有人可以解釋爲什麼這

    0熱度

    1回答

    我想找到沒有排序的列表中位數約約中位數,我知道兩算法 算法1 quickselect 算法的2-位數的中位數 我不能使用快速選擇我的項目,因爲它在最壞的情況下需要O(n^2)。 我聽說過中位數的中位數,但是我的同事們建議它用一些常數因子來處理O(n)。因此它的時間複雜度是Cn,常數因子與快速選擇相比是大的。我想知道與中位數中位數相關的常數因子是什麼?以及爲什麼中位數中位數不使用9位元的中位數? 還

    1熱度

    1回答

    所以我想實現在C quickselect算法++,以便找到一個向量的中值,但它是不正確的部分排序列表,也沒有返回正確的中值。 我似乎無法找到錯誤所在。我是這個算法的新手,這是我第一次嘗試實現它。以下附上我的代碼,所以如果有人比我更博學有什麼錯誤任何想法,我將非常感謝您的輸入。 //Returns the index of the object with the kth largest value

    1熱度

    2回答

    這裏是quickselect def quickSelect(lst, k): if len(lst) != 0: pivot = lst[(len(lst)) // 2] smallerList = [] for i in lst: if i < pivot: smallerList.append(i) largerList =

    0熱度

    1回答

    好吧,我開發了一個通用的quickselect函數,它用於查找列表的中位數。 k = len(aList)//2 and the list is aList = [1,2,3,4,5] 那麼,如果每次在列表的第一個項目處啓動數據透視表,程序將如何行爲不同。我必須在中心嗎?另外我應該在哪裏啓動time.clock()以查找函數的運行時間。這裏是代碼 def quickSelect(aList,

    0熱度

    1回答

    處理一些東西,我遇到了一個奇怪的問題,我很難找出答案。我使用兩種方法對10,000個值進行排序,其中一個使用快速選擇,另一個使用插入排序的usgae。其目標是找到一箇中位數,然後使用所述中位數,我必須找到中間值和所有值之間的總距離。中位數計算工作得很好,但總計算,因爲我無法理解的原因返回不同的值。計算總數的函數輸入是列表和中位數。兩個程序的中位數保持不變,列表的值也一樣,但其中一個列表已排序,另一

    1熱度

    1回答

    所以我開發了一個快速選擇函數的代碼,但它似乎沒有打印出中位數。 我有一個文件名的主要功能提示,然後導入txt文件,把它分解成數字的列表,這是txt文件: Offices 70 MedicalOffice 120 PostOffice 170 Mall 200 它被導入到一個列表: L = ['70', '120', '170', '200'] 當它通過quickselect函數運行時

    0熱度

    1回答

    我想在C++中使用quickselect來做到這一點,但它不斷返回第k個最小元素而不是第k個最大元素。我的邏輯錯在哪裏? int partition(int* input, int p, int r) { int pivot = input[r]; while (p < r) { while (input[p] < pivot) p++;

    6熱度

    1回答

    問題:我經常需要查看特定日誌的最後一天內最頻繁重複的「模式」。喜歡的tomcat日誌的一小部分在這裏: GET /app1/public/pkg_e/v3/555413242345562/account/stats 401 954 5 GET /app1/public/pkg_e/v3/555412562561928/account/stats 200 954 97 GET /app1/sec