冒泡排序
冒泡排序的思想就是通过两个for循环遍历数组对里面的元素进行比较,第一个循环先选一个key值,进入第二个循环,遍历除第一个外的其他元素与key值比较,小的往前面冒泡,让第一个位置的数成为最小的那个,第二次循环找到第二小的值,不断冒泡得到正确的排序。
var arr=[2,3,5,8,1,4,6];
function func(arr){
var temp,i,j;
for(i=0;i<arr.length;i++){
for(j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
return arr;
}
var test=func(arr);
console.log(test);
快速排序
我在之前的文章中写过用一次快排,思想就是一次排序加一个递归,写得很繁琐,思想也较用js写得麻烦一下,是因为在js里面用到了一下函数方法的缘故。当然不同的方法有不同的优劣和使用范围,具体选哪一种方法可以根据实际情况考虑。js的快排思想主要是递归,用了两个关于数组的操作方法,具体用法已在程序中注释。
var arr = [2,3,5,8,1,4,6];
function quickSort(arr) {
if(arr.length <= 1) {
return arr;
}
var left = [];
var right =[];
var index = Math.floor(arr.length / 2);
var mindVal=arr.splice(index,1)[0];
//从数组中删除部分并返回
for(var i = 0; i < arr.length; i++) {
if(arr[i] < mindVal) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat(mindVal, quickSort(right));
//concat连接数组
}
var test=quickSort(arr);
console.log(test);