我有一個排序算法(我不知道)的可執行文件,我的實驗室基本上是通過輸入不同的情況並測試它的複雜性/穩定性來嘗試找出排序算法。可執行文件中包含的排序算法由Signal 11命令結束?
我在隨機列表上測試了它,它有500 000行,它工作正常(排序500 000行隨機數據0.17秒)。然而,我試圖輸入一個200000行的有序列表,這是終端給我的:
$ ./gen 180000 A | /usr/bin/time --format="%U seconds" ./sortB > /dev/null
Command terminated by signal 11
32.38 seconds
爲什麼程序這樣做?如果我記得正確signall 11意味着一個分段錯誤的權利?所以它試圖訪問不在那裏的內存?該算法在500 000行隨機列表上運行良好,並且在有序列表的170 000行處執行29.48秒(在180 000時它給了我一個信號11)。正如我所說我無法訪問代碼,它是一個只執行文件,但我想不出爲什麼任何排序算法會有這個問題?
這個算法肯定是'快速排序',並且由於'(遞歸)堆棧溢出'而導致'段錯誤(信號-11)'.. – vish4071