<p>как следующий код сортирует этот массив по порядку номеров?</p><pre><code>var array=[25, 8, 7, 41] array.sort(function(a,b){ return a - b }) </code></pre><p>я знаю, что если результат вычисления ...</p><p><strong>меньше</strong>: "a" сортируется как более низкий индекс, чем "b".<br> <strong>zero:</strong> "a" и "b" считаются равными, и сортировка не выполняется.<br> <strong>больше 0:</strong> "b" сортируется как более низкий индекс, чем "a".<br></p><p>вызывается ли функция обратного вызова сортировки массива много раз в течение сортировки?</p><p>если это так, я хотел бы знать, какие два числа передаются в функцию каждый раз. я предположил, что сначала взял "25" (а) и "8" (б), а затем "7" (а) и "41" (б), так что:</p><p>25 (a) - 8(b) = 17 (больше нуля, поэтому сортируйте "b", чтобы индекс был ниже, чем "a"): 8, 25</p><p>7 (a) - 41 (b) = -34 (меньше нуля, так что сортируйте "a", чтобы иметь более низкий индекс, чем "b": 7, 41</p><p>как два набора чисел затем сортируются по отношению друг к другу?</p><p>пожалуйста, помогите борющемуся новичку!</p>

<blockquote> <p><em> функция обратного вызова сортировки массива вызывается много раз в течение сортировки? </em></p> </blockquote><p>да</p><blockquote> <p><em> если это так, я хотел бы знать, какие два числа передаются в функцию каждый раз </em></p> </blockquote><p>вы можете узнать себя с помощью:</p><pre><code>array.sort((a,b) => { console.log(`comparing ${a},${b}`); return a > b ? 1 : a === b ? 0 : -1; }); </code></pre><p><strong>редактировать</strong></p><p>это вывод, который я получил:</p><pre><code>25,8 25,7 8,7 25,41 </code></pre>

<blockquote> <p>вызывается ли функция обратного вызова сортировки массива много раз в течение сортировки?</p> </blockquote><p>поскольку это сортировка сравнения, учитывая n элементов, функцию обратного вызова следует вызывать в среднем (n * lg n) раз для быстрой сортировки, например <a href="http://en.wikipedia.org/wiki/quicksort">quicksort</a> . если используемый алгоритм что-то вроде <a href="http://en.wikipedia.org/wiki/bubble\_sort">bubble sort</a> , то функция обратного вызова будет вызываться в среднем (n * n) раз.</p><p>минимальное количество вызовов для сортировки сравнения составляет (n-1), и оно предназначено только для обнаружения уже отсортированного списка (т. е. на ранней стадии bubble sort, если не происходит перестановок).</p>

<p>запустите этот код. вы можете увидеть точный пошаговый процесс сортировки от начала до конца.</p><pre><code>var array=[25, 8, 7, 41] var count = 1; array.sort( (a,b) => { console.log(`${count++}). a: ${a} | b: ${b}`); return a-b; }); console.log(array); </code></pre>