ホームページ > ウェブフロントエンド > jsチュートリアル > js アルゴリズムの並べ替えと配列の重複排除の詳細な概要_javascript スキル

js アルゴリズムの並べ替えと配列の重複排除の詳細な概要_javascript スキル

WBOY
リリース: 2016-05-16 17:20:03
オリジナル
1320 人が閲覧しました

実際、配列のsortメソッドを使用してjsで配列のソートを実装するのは比較的簡単です。

1. 並べ替え

配列ソートの簡単な実装

コードをコピー コードは次のとおりです:

var arr = [] ;
for(var i=0;i arr.push(Math.floor(Math.random()*100))
}
arr .sort(function (a,b){
return a>b?1:-1;
})
alert(arr)

単純に並べ替えを使用することはできませんデフォルトでは、sort メソッドは、私たちが考えているような数値サイズではなく、ASCII アルファベット順にソートされます。 sort() メソッドはメソッドをパラメータとして受け入れることができます。このメソッドには 2 つのパラメータがあります。各並べ替え比較における 2 つの配列項目を表します。 sort() がソートするとき、このパラメーターは 2 つの配列項目が比較されるたびに実行され、2 つの比較された配列

項目は引数としてこの関数に渡されます。関数が値 1 を返した場合、2 つの配列項目の順序は交換されます。それ以外の場合は交換されません。

アルゴリズムの配列ソート


コードをコピー コードは次のとおりです:
var arr = [] ;
for(var i=0;i arr.push(Math.floor(Math.random()*100))
}
//ソートなしの arr 配列を生成します。
function sort(arr,start,end){
//配列の長さは 1
if(start == end ){
return [arr[start]]
} else if(start == end-1){
[end]、arr [start]
} else {l = math.floor((start end)/2) //左側の配列
var arrLeft = sort(arr, start,l);
//右側の配列
var arrRight = sort (arr,l 1,end); /Return result
var result = [];
// 左右の配列を 2 つの部分に分割し、配列の最初の数値のみを比較し、値が小さい場合は結果に入れて削除します小さい値を配列で使用します。左の配列または右の配列が表示され、データが存在しない場合
//結果の配列は concat を使用してデータのある配列と結合され、結果が返されます
while(arrLeft.length>0 || arrRight.length> ;0 ){
if(arrLeft.length==0){
result = result.concat(arrRight);
ブレーク;
}else if(arrRight.length==0){
result = result.concat(arrLeft);

if(arrLeft[0] length-1);//パラメータ配列、開始位置、終了位置

document.write(arr '
' arrSort);


説明: 配列のソートでは主に、配列を 2 つに分割できなくなるまで分割します。配列の長さが奇数と 2 に分割されるため、最終的に唯一の選択肢は配列を 1 つまたは 2 つに分割することです。偶数の分割 最終配列に 1 つまたは 2 つしかない場合、ソートが開始され、結果が返され、これらの結果が 1 つずつ比較されてマージされます。なぜこの方法がこんなに複雑なのかと思われるかもしれませんが、実際にはもちろん使用できますが、データが数十、数百、すべての人の場合でもパフォーマンスという言葉が使われます。計算された結果 データが数億または数十億もの巨大な場合、まだ最初の方法を使用する自信がありますか? 実際、js のアルゴリズムは、多くの問題を小さな問題に分割して解決します。解決する。

2. 配列から重複を削除します

重複を削除する簡単な方法: まず空の配列を宣言し、重複した配列を for ループに挿入し、重複ではない繰り返しの挿入をスキップします

コードをコピー コードは次のとおりです:

var arr = [];
for(var i=0;i<20;i ){
arr .push(parseInt (Math.random()*10));
}
Array.prototype.indexOf = function(n){
for(var i=0;i If(this[i] == n){
return i;
}
}
return -1;
関数 RemoveDup(arr){
var result = [];
for(var i=0;i if(result.indexOf(arr[i]) == -1){

result.push(arr[i]);
} />'


重複を削除するアルゴリズム配列



コードをコピー

コードは次のとおりです。var arr = [] for(var i=0;i<20;i ){ arr.push(parseInt(Math.random()*10)); }
Array.prototype.indexOf = function(n){
for(var i=0;i< ; this.length; i){
if(this [i] == n){
return i; [arr[s]]
}else{
return [arr[s],arr[e]]; s,l);
//右側
var arrR = RemoveDup (arr,l 1,e);
//最初に結果をコピーします
var result = arrL;
// 結果に一意のデータを挿入する
for(var i= 0;i if(result.indexOf(arrR[i])== -1 ) result.push(arrR[i])
}
結果を返します。 /Return result
}
var arrDup = RemoveDup(arr, 0, arr.length-1);
document .write(arr '
' arrDup);


説明: 最後に 1 つのデータまたは 2 つの配列だけが残るまで繰り返し配列を切り取り、左側のデータを結果に入れ、右側の繰り返し挿入をスキップします。ループが完了するまで、結果を返すことができます
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート