第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Array.Sort()方法在不同瀏覽器中的穩(wěn)定性如何?

Array.Sort()方法在不同瀏覽器中的穩(wěn)定性如何?

慕田峪4524236 2019-07-08 12:48:44
Array.Sort()方法在不同瀏覽器中的穩(wěn)定性如何?我知道ECMA腳本規(guī)范沒有指定用于排序數(shù)組的算法,也沒有指定排序是否應(yīng)該穩(wěn)定。我發(fā)現(xiàn)這是Firefox的信息它指定Firefox使用穩(wěn)定的排序。有人知道IE6/7/8,Chrome和Safari嗎?
查看完整描述

3 回答

?
婷婷同學(xué)_

TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個贊

我想分享一個我在C/C+中經(jīng)常使用的技巧qsort().

JS的SORT()允許指定一個比較函數(shù)。創(chuàng)建第二個長度相同的數(shù)組,并使用從0增加的數(shù)字填充它。

function stableSorted(array, compareFunction) {
  compareFunction = compareFunction || defaultCompare;
  var indicies = new Array(array.length);
  for (var i = 0; i < indicies.length; i++)
    indicies[i] = i;

這是原始數(shù)組的索引。我們將對第二個數(shù)組進(jìn)行排序。建立一個自定義比較函數(shù)。

  indicies.sort(function(a, b)) {

它將從第二個數(shù)組中獲取這兩個元素:將它們用作原始數(shù)組的索引,并比較這些元素。

    var aValue = array[a], bValue = array[b];
    var order = compareFunction(a, b);
    if (order != 0)
      return order;

如果元素恰好相等,那么比較它們的索引以使順序穩(wěn)定。

   if (a < b)
     return -1;
   else
     return 1;
  });

在SORT()之后,第二個數(shù)組將包含索引,您可以使用這些索引以穩(wěn)定的排序順序訪問原始數(shù)組的元素。

  var sorted = new Array(array.length);
  for (var i = 0; i < sorted.length; i++)
    sorted[i] = array[indicies[i]];
  return sorted;}// The default comparison logic used by Array.sort(), if compareFunction is not provided:function defaultCompare(a, b) {
  a = String(a);
  b = String(b);
  if (a < b) return -1;
  else if (a > b) return 1;
  else return 0;}

一般來說,穩(wěn)定的排序算法僅僅是成熟的,與好的ol‘qSort相比,仍然需要更多的額外內(nèi)存。我想這就是為什么很少有規(guī)格要求穩(wěn)定排序。


查看完整回答
反對 回復(fù) 2019-07-08
  • 3 回答
  • 0 關(guān)注
  • 776 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號