quicksort

    1熱度

    3回答

    從http://www.geeksforgeeks.org/merge-sort-for-linked-list/ 鏈表的慢隨機存取性能使得其他一些 算法(如快速排序)表現不佳,和其他人(如 堆排序)完全不可能的。 不過,我真的不明白爲什麼快速排序將執行比歸併排序而排序的鏈接列表變得更糟。 在快速排序: 選擇一個支點,需要隨機訪問,並需要通過鏈表(O(每遞歸N))進行迭代。 分區可以用左到右的掃描

    0熱度

    1回答

    這是我輸入: [3, 9, 8, 4, 6, 10, 2, 5, 7, 1] 這裏是我的代碼(這還沒有實現的另一個原因名爲count): def Count(num_list): global comparisons if len(num_list) > 1: pivot = num_list[0] print "Pivot value is: %s, curren

    -2熱度

    1回答

    void swap(Person* a, int i, int j) { Person b; b = a[i]; a[i] = a[j]; a[j] = b; } void quicksort(Person* a, int left, int right, PersonComparator cmp) { if (left >= right)

    0熱度

    1回答

    我一直在研究快速排序幾個小時,並且對選擇一個樞軸值感到困惑。數據透視值是否需要存在於數組中? 例如,如果數組是1,2,5,6,我們可以使用值3還是4作爲支點? 我們使用pivot的位置來將數組分割成子數組,但我們對將數組左側的值和右側的值> 5的數值移動後的樞軸位置有些困惑? 7,1,5,3,3,5,8,9,2,1 我拼命地跑乾的算法中與樞軸5和具有以下結果出來: 1,1,5,3,3,5,8,

    0熱度

    2回答

    我試圖在YouTube上觀看此視頻後編寫快速排版實現。 https://www.youtube.com/watch?v=MZaf_9IZCrc&t=215s但它不起作用。有人能告訴我我做錯了什麼嗎?謝謝 Ferda public class Trial{ public static void main(String []args){ int arr[] = {7, 3, 4

    5熱度

    2回答

    我嘗試implement一些使用C的純粹通用算法。我堅持使用3路快速排序,但不知何故實現不能提供正確的輸出。輸出幾乎排序,但一些鍵不應該在那裏。代碼如下。提前致謝。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> static void swap(void *x, void *y,

    0熱度

    2回答

    我有這個任務來開發一個程序,實現快速排序算法與數組中的第一個元素作爲樞軸值。我已經設法通過使用數組中的20個元素來進行排序。 現在,我想計算比較的次數和在排序過程中發生的移動。我已經試過這段代碼,但輸出結果看起來不正確。比較和移動反覆保持打印輸出。我怎樣才能打印出移動和比較只有一次?希望有人願意幫助我。提前致謝。 代碼的比較和招式: int partition1(int arr[], int st

    -1熱度

    1回答

    我看到這兩個JS代碼塊爲Quick sort和Merge sort 我想實踐一些並行執行來測量每個代碼需要排序條的時間。我知道JS在單線程和單進程中工作,但我也認爲如何測量時間是一個很好的方法。 我該怎麼做?它是與一些特殊的圖書館或一些JavaScript技巧?

    -4熱度

    1回答

    錯誤在此範圍內未聲明「Pindex」。 (第15行) 另外,就是與 int a[] 和 int a* ,並提出一些資源explainatio的排序算法,宣佈在功能陣列之間的差異。 #include<iostream> using namespace std; int Partition(int a[], int start, int last); void QuickSort(in

    0熱度

    1回答

    我從用戶掃描了字符串。下一步是按照文本的長度對數組進行排序,我不知道我在做什麼錯誤,有時它正在工作。 public static void quickSort(String[] subtitles, int start, int end) { int i = start; int j = end; if (j - i >= 1) { String pivo