1.冒泡排序
比较简单的写法:
function bubbleArra(a) {
let arr = a;
let length = arr.length;
while (length) {
数组有多长就循环几次进行左右比较,每次比较就会找到一个最大的放到最后
for (let j = 0; j < length; j++) {
let left = arr[j];
let right = arr[j + 1];
if (left > right) {
arr[j] = right;
arr[j + 1] = left;
}
}
length-;
}
return arr;
}
比较严谨的写法:
function bubbleArray(arr){
for(var i=0;i<arr.length-1;i++){
数组有多长就循环几次进行左右比较,每次比较就会找到一个最大的放到最后(减少了后面不必要的比较)
for(var j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
var temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
return arr;
}
2.选择排序
function selectArray(arr){
var min,temp;
for(var i=0;i<arr.length-1;i++){
//首先随机设置一个最小值
min=i;
for(var j=i+1;j<arr.length;j++){
//循环后面的数组
if(arr[j]<arr[min]){
min = j;
//如果遇到比arr[min]还小的值,就交换index值
}
}
temp=arr[i];
//把刚开始定义的最小值赋给一个变量
arr[i]=arr[min];
//把刚才循环比较出的最小值赋给开始定义的名义上的最小值
arr[min]=temp;
//继续进行后续的比较
}
return arr;
}
3.二分法排序(快速排序)
function quickArray(arr){
if(arr.length<2){return arr}
如果数组长度小于二,就返回数组
var left=[],right=[],mid=arr.splice(Math.floor(arr.length/2),1);
随机找一个中介值进行比较
for(var i=0;i<arr.length;i++){
if(arr[i]<mid){
left.push(arr[i]);
}else {
right.push(arr[i])
}
}
return quickSort(left).concat(mid,quickSort(right))
拼接排序的数组
}
console.log(quickSort([6,1,2,4,3,5]))
4.sort(神器)
function sortNumber(a,b)
{
return a - b
}
document.write(arr.sort(sortNumber))