Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对数组排序的最佳方法是什么;考虑到空间的复杂性?_Javascript_Arrays - Fatal编程技术网

Javascript 对数组排序的最佳方法是什么;考虑到空间的复杂性?

Javascript 对数组排序的最佳方法是什么;考虑到空间的复杂性?,javascript,arrays,Javascript,Arrays,我知道对数组进行排序的各种方法,但当事情发生时,我将不得不管理时间和空间的复杂性,我只是不知道该做什么以及如何做 帮助我以更少的时间和空间复杂性以更好的方式对数组进行排序 假设我在一个数组中有10k个元素,我必须对该数组进行排序,哪种排序算法更好 var Arr = [ 3, 4,1,2, 5,7]; Arr.sort((a,b)=> a-b); console.log('Arr.sort------',Arr);//[ 1, 2, 3, 4, 5, 7 ]

我知道对数组进行排序的各种方法,但当事情发生时,我将不得不管理时间和空间的复杂性,我只是不知道该做什么以及如何做

帮助我以更少的时间和空间复杂性以更好的方式对数组进行排序

假设我在一个数组中有10k个元素,我必须对该数组进行排序,哪种排序算法更好

 var Arr = [ 3, 4,1,2, 5,7];
     Arr.sort((a,b)=> a-b);
     console.log('Arr.sort------',Arr);//[ 1, 2, 3, 4, 5, 7 ]
    
    OR
    
    for (var i = 1; i < Arr.length; i++){ 
      console.log('i:',i)
        for (var j = 0; j < i; j++){
          console.log(j)
            if (Arr[i] < Arr[j]) {
              var x = Arr[i];
              Arr[i] = Arr[j];
              Arr[j] = x;
            }
        }
    }
    
    console.log('sort------',Arr);//[ 1, 2, 3, 4, 5, 7 ]
OR
function selectionSort(arr) {
   var minIdx, temp,
       len = arr.length;
   for (var i = 0; i < len; i++) {
       minIdx = i;
       for (var j = i + 1; j < len; j++) {
           if (arr[j] < arr[minIdx]) {
               minIdx = j;
           }
       }
       temp = arr[i];
       arr[i] = arr[minIdx];
       arr[minIdx] = temp;
   }
   return arr;
}
var selectionSortArr=Arr
var ddd = selectionSort(selectionSortArr);
console.log('sort -------',selectionSortArr);//[ 1, 2, 3, 4, 5, 7 ]
var-Arr=[3,4,1,2,5,7];
Arr.sort((a,b)=>a-b);
console.log('Arr.sort-----',Arr)//[ 1, 2, 3, 4, 5, 7 ]
或
对于(var i=1;i
对于大多数情况,内置的
.sort
方法可能已经比任何定制方法都要优化得多了。使用数组.sort()?它应该具有令人满意的复杂性,并且实现通常也会考虑输入的大小,因此它们不会(例如)对三个元素或类似元素运行快速排序。您需要查找各种通用排序算法,以了解它们的权衡和限制行为(即)。每一个都是不同的,并且可以根据您的用例进行优化。然而,大多数日常编程没有达到复杂程度,内置的
Array#sort
方法成为瓶颈。迄今为止,排序数组的最佳算法是快速合并排序算法。你可以阅读更多关于它的内容。这回答了你的问题吗?