単純に並べ替えを使用することはできませんデフォルトでは、sort メソッドは、私たちが考えているような数値サイズではなく、ASCII アルファベット順にソートされます。
sort() メソッドはメソッドをパラメータとして受け入れることができます。このメソッドには 2 つのパラメータがあります。各並べ替え比較における 2 つの配列項目を表します。 sort() がソートするとき、このパラメーターは 2 つの配列項目が比較されるたびに実行され、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]);
} />'
重複を削除するアルゴリズム配列
コードをコピー
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 つの配列だけが残るまで繰り返し配列を切り取り、左側のデータを結果に入れ、右側の繰り返し挿入をスキップします。ループが完了するまで、結果を返すことができます