jsソートアルゴリズム:
まず、さまざまな並べ替え関数を後で呼び出すためのパラメーターを渡すために、いくつかの数値を含む配列をカスタマイズします
//自定义三个数字5 10 20 进行降幂排序
var a=[5,10,20,50,23];
1.sort()ソート
文字のみを並べ替えることができます。数字を並べ替える場合は、「比較関数(sortby()、名前は指定されていません。自分で名前を付けてください)」を使用する必要があります。
小さいものから大きいもの、ab、大きいものから小さいものへと並べ替えます。バへ
function sortby(a,b){
return b-a;
}
document.write(a.sort(sortby));
2.並べ替えを選択します
各サイクルは最大の要素を見つけ、それを前にソートされた最後の要素と交換します
//降序
function selectSort(a){
var min=null
for(var i=0;i<a.length-1;i++){
min=i;
for(var j=i+1;j<a.length;j++){
if(a[j]>a[min]){
min=j;
}
if(min!=i){
var c=a[min];
a[min]=a[j];
a[j]=c;
}
}
}
return a;
}
document.write(selectSort(a))
3.バブルソート
隣接する2つの要素を比較し、小さい方の要素を後ろに置きます
function bubbleSort(a){
for(var i=0;i<a.length-1;i++){
for(var j=0;j<a.length-i-1;j++){
if(a[j]<a[j+1]){
var c=a[j];
a[j]=a[j+1];
a[j+1]=c;
}
}
}
return a;
}
document.write(bubbleSort(a));
4.挿入ソート
配列内の添え字1の数字から始めて、前の要素と比較し、小さい方の要素を後ろに置きます
function insertSort(a) {
for (var i = 1; i <a.length; i++) {
// 待插元素
var item = a[i];
//排序后的末尾元素
var j = i - 1;
// 从排序好的末尾元素开始遍历
// 如果大于待插元素就把当前元素往后挪
while (j >= 0 && a[j] > item) {
arr[j + 1] = a[j];
j--;
}
// 插入待插元素
a[j + 1] = item;
}
return arr;
}
document.write(insertSort(a));
5.クイックソート
function quickSort(a){
if(a.length<=1){
return arr
}
var midindex=Math.floor(arr.length/2)
var miditem=a.splice(midindex,1)[0]
var left=[]
var right=[]
for(var i=0;i<a.length;i++){
if(miditem>a[i]){
left.push(a[i])
}else{
right.push(a[i])
}
}
return quickSort(left).concat(miditem,quickSort(right))
}
document.write(quickSort(a));