algoritmo de clasificación js:
Primero, personalice una matriz que contiene varios números para pasar parámetros para llamadas posteriores a varias funciones de clasificación
//自定义三个数字5 10 20 进行降幂排序
var a=[5,10,20,50,23];
1.ordenar () ordenar
Solo se pueden ordenar los caracteres. Si desea ordenar los números, debe usar la "función de comparación (aquí está sortby (), sin nombre especificado, asígnele el nombre)".
Ordenar de pequeño a grande a ab, de grande a pequeño a ba
function sortby(a,b){
return b-a;
}
document.write(a.sort(sortby));
2. Elija un tipo
Cada ciclo encuentra el elemento más grande y luego lo intercambia con el último ordenado antes.
//降序
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. Clasificación de burbujas
Compare dos elementos adyacentes, coloque el más pequeño detrás
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. Orden de inserción
Comience desde el número con el subíndice 1 en la matriz, compare con el elemento anterior y coloque el más pequeño en la parte posterior
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. Clasificación rápida
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));