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