js常见排序

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
//冒泡排序
//两两比较交换位置。
function sortBubble(arr){
for(i=0;i<arr.length-1;i++){
for(j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
var temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
return arr;
}
//快速排序
// (1)在数据集之中,选择一个元素作为"基准"(pivot)。
// (2)所有小于"基准"的元素,都移到"基准"的左边;所有大于"基准"的元素,都移到"基准"的右边。
// (3)对"基准"左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。
function quickSort(arr) {
var len = arr.length, a0 = arr[0], left = [], right = [];
if (arr.length <= 1) { return arr;}
for (var i = 1; i < len; i++) {
if (arr[i] < a0) {
left.push(arr[i])
} else {
right.push(arr[i])
}
}
return arguments.callee(left).concat([a0], arguments.callee(right));
}
//插入排序
// 1.首先将数组第1个数看成是一个有序序列。
// 2.将数组的第2个数按照关键字大小插入到这个有序序列中,插入后得到了一包含两个数的有序序列。
// 3.接下来再重复上面的步骤将第3,第4……第n-1个数分别插入到该有序序列中,最终得到一个包含n个数的有序序列。
function insertSort(arr){
var len =arr.length,temp, i,j;
for(i=1;i<len;i++ ){
temp = arr[i];
j = i-1;
while(j>=0 && arr[j]>temp){
arr[j+1] = arr[j];
j--;
}
arr[j+1] = temp;
}
return arr;
}
//选择排序
//1.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,
//2.然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
//3.以此类推,直到所有元素均排序完毕。
function selectSort(arr){
var len = arr.length, i, j,temp;
for(i=0;i<len-1;i++){
temp = arr[i];
for(j = i+1;j<len-1;j++){
if(temp>arr[j]){
var min = temp;
temp = arr[j];
arr[j] = min;
}
}
arr[i] = temp
}
return arr;
}
var arr = [1,2,4,5,3,2,3];
console.log(sortBubble(arr));
console.log(quickSort(arr));
console.log(insertSort(arr));
console.log(selectSort(arr))
</script>
</body>
</html>
原文地址:https://www.cnblogs.com/tutao1995/p/8547753.html