Bootstrap

JavaScript面试遇到的排序问题



自己学习的计算机,对计算机知识还是欠缺,面试了几家都觉得我基础差,想想也是,不能立即展现你的技术功底很难在一个互联网发达的城市立足。遇到了问排序的面试问题,但是快速排序没有写对。被pass。废话多了~~~~~~~~

1、冒泡排序。

就像字面意思一样,水泡小的水泡大的在生活中很常见,在透明水杯可以看到,水泡小的在下面,大的在上面。冒泡排序是从一个数组的第一项开始

<script>
  var ary=[21,8,4,32,5];
  function incertSort(ary){
    var.left=ary.spice(0.1);
    for( var i=0; i<ary.length;i++){
     var cur=ary[i];
     for(var j=left.length-1;j>=0){
      var nex=left[j]
       if(cur<nex){
       j--;
       if(j===-1){
       left.unshift(cur);
}
}
  else{
    left.splice(j+1,0,cur);
     break;
}
}
}
return left;
}
 document.write(incertSort(ary));
</script>

,取出其值,让此值与数组后面的值进行比较,如果大于后面的就交换位置,一直到最小的或最大有一个顺序。插入排序:取出数组的第一项放到新数组里,让剩余的每一项与新数组里的每一项进行比较,小的放左,大的放右

<script>
    var ary=[21,32,2,9,4];
     function bubbleSort(ary){
         for(var i=0;i<ary.length;i++){
            for(var  j=0;j<ary.length_i_1;j++){
     if(ary[j]>ary[j+1]){
       var tep=ary[j+1]
         ary[j+1]=ary[i]
         ary[j]=temp
                }
            }
       }
      return ary;
     }
  document.write(bubbleSort(ary);
</script>

快速排序:取出数组的中间项,然后把数组中剩下的每一项进行比较,如果小于该项,就放在其左边,大于该项就放在其右边,在分别把左边的项和右边的项进行中间值取出,重复比较操作,直到项数是1.

<script>
 var ary=[21,8,4,32,5];
 function quickSort(ary){
   if(ary.length<=1){
  return ary;
}
   var num=Math.floor(ary.length/2);
   var numValue=ary.splice(num,1)[0];
   var left=[];
   var right=[];
   for( var i=0; i<=ary.length;i++){
   var cur=ary[i];
   if(cur<numberValue){
     left.push(cur);
}
    else{
    right.push(cur);
}
}
 return quickSort(left) .concat([numValue],quickSort(right));
}
  document.write(quickSort(ary));
</script>


;