ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScriptクイックソートアルゴリズムの詳しい解説_JavaScriptスキル

JavaScriptクイックソートアルゴリズムの詳しい解説_JavaScriptスキル

WBOY
WBOYオリジナル
2016-05-16 16:36:101645ブラウズ

「クイックソート」のアイデアは非常にシンプルで、ソートプロセス全体に必要なステップは 3 つだけです。

(1) データセット内の参照点を見つける

(2) 左と右の配列をそれぞれ格納する 2 つの配列を作成します

(3) 次の比較には再帰を使用します

デモを見る: http://jsdo.it/norahiko/oxIy/fullscreen (Web ページが開くのが遅い場合があります。お待ちください)

<script type="text/javascript"> 

function quickSort(arr){
  if(arr.length<=1){
    return arr;//如果数组只有一个数,就直接返回;
  }

  var num = Math.floor(arr.length/2);//找到中间数的索引值,如果是浮点数,则向下取整
  var numValue = arr.splice(num,1);//找到中间数的值
  var left = [];
  var right = [];

  for(var i=0;i<arr.length;i++){
    if(arr[i]<numValue){
      left.push(arr[i]);//基准点的左边的数传到左边数组
    }
    else{
      right.push(arr[i]);//基准点的右边的数传到右边数组
    }
  }
 return quickSort(left).concat([numValue],quickSort(right));//递归不断重复比较
}
alert(quickSort([32,45,37,16,2,87]));//弹出“2,16,32,37,45,87”

</script>

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。