Javascript sort( ) 冒泡排序,选择排序,快速排序

sort( ) ,对数组进行正序或者倒序排列,改变原数组

var arr=[1,4,6,2,3,8,7,6,5,3,9,10];
arr.sort();
console.log(arr);//[1,10,2,3,3,4,5,6,6,7,8,9,12]

想让数组按照从小到大,或者从大到小的顺序排列,需要给 sort ( ) 里传入参数

var arr=[1,4,6,2,3,8,7,6,5,3,9,10];
//return a-b,表示从小到大排列
//return b-a,表示从大到小排列
arr.sort(function(a,b){
    return a-b;
})
//return Math.random()-0.5; 表示乱序排列
arr.sort(function(){
	return Math.random()-0.5;
})
冒泡排序
  1. 从后向前循环
  2. 内部从前向后循环到外层变量
  3. 判断前值是否大于后值,如果前值大小后值,则交换位置
function sort(arr){
	var len=arr.length;
	while(len>0){
	    for(var i=0;i<len;i++){
	        if(arr[i]>arr[i+1]){
	            var temp=arr[i];
	            arr[i]=arr[i+1];
	            arr[i+1]=temp;
	        }
	    }
	    len--;
	}
}
选择排序

先找出最小或者最大的索引值,然后用当前的下标的元素与这个最小的元素交换

  1. 遍历数组
  2. 设置最小的索引值为当前的索引值
  3. 从当前的下一项开始遍历到数组的尾部
  4. 判断所有遍历的值中最小的值得索引值
  5. 交换当前值和最小索引值的元素
function sort(arr){
	var minIndex;
	for(var i=0;i<arr.length;i++){
		//假设第一位元素为最小值
	    minIndex=i;
	    for(var j=i+1;j<arr.length;j++){
	    	//判断如果当前元素大于最小值,则minIndex不变,否则把当前元素的下标赋值给变量minIndex
	        minIndex=arr[minIndex]<arr[j] ? minIndex : j;
	    }
	    //交换当前值和minIndex的元素
	    var temp=arr[i];
	    arr[i]=arr[minIndex];
	    arr[minIndex]=temp;
	}
}
快速排序(快排)
  1. 删除数组中间的元素,并且,将这个元素返回一个变量
  2. 创建两个空数组,一个是left,一个是right,遍历这个数组,将小于中间元素的数据存入left,大于中间元素的数据存入right
  3. 将left数组递归与中间元素和right数组递归的结果合并返回
  4. 在函数最顶部,一定要写数组长度小于等于1,返回该数组
var arr = [1,4,2,2,3,10];
function sort(arr){
	//如果数组的长度小于等于1,则停止回调
    if(arr.length<=1) return arr;
    var left=[];
    var right=[];
    //取到数组最中间的值赋值给item,如果数组的长度为单数,则取中间前一位数
    var item=arr.splice(parseInt(arr.length/2),1)[0];
    for(var i=0;i<arr.length;i++){
    	//遍历数组,如果值小于item,则放入left数组中
        if(arr[i]<item) left.push(arr[i]);
        //如果值大小item,则放入right数组中
        else right.push(arr[i]);
    }
    arr=sort3(left).concat(item,sort3(right));
    return arr;
}
console.log(sort(arr));
发布了46 篇原创文章 · 获赞 26 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Charissa2017/article/details/103788008
今日推荐