js实现数组冒泡排序、快速排序原理
本文为大家分享了js数组冒泡排序、快速排序的实现原理,供大家参考,具体内容如下
1、冒泡排序:
随便从数组中拿一位数和后一位比较,如果是想从小到大排序,那么就把小的那一位放到前面,大的放在后面,简单来说就是交换它们的位置,如此反复的交换位置就可以得到排序的效果。
vararr=[3,1,4,2,5,21,6,15,63];
functionsortA(arr){
for(vari=0;i<arr.length-1;i++){
for(varj=i+1;j<arr.length;j++){
//获取第一个值和后一个值比较
varcur=arr[i];
if(cur>arr[j]){
//因为需要交换值,所以会把后一个值替换,我们要先保存下来
varindex=arr[j];
//交换值
arr[j]=cur;
arr[i]=index;
}
}
}
returnarr;
}
//因为一次循环只能交换一个最大的值,所以需要再套一层for循环。
2、快速排序:
从数组的中间拿一个值,然后通过这个值挨个和数组里面的值进行比较,如果大于的放一边,小于的放一边,然后把这些合并,再进行比较,如此反复即可。
vararr=[3,1,4,2,5,21,6,15,63];
functionsortA(arr){
//如果只有一位,就没有必要比较
if(arr.length<=1){
returnarr;
}
//获取中间值的索引
varlen=Math.floor(arr.length/2);
//截取中间值
varcur=arr.splice(len,1);
//小于中间值放这里面
varleft=[];
//大于的放着里面
varright=[];
for(vari=0;i<arr.length;i++){
//判断是否大于
if(cur>arr[i]){
left.push(arr[i]);
}else{
right.push(arr[i]);
}
}
//通过递归,上一轮比较好的数组合并,并且再次进行比较。
returnsortA(left).concat(cur,sortA(right));
}
想要学习更多关于javascript排序的内容,请点击《javascript排序方法实现》。
以上就是本文的全部内容,希望对大家的学习有所帮助。