1.冒泡排序(小->大)
工作原理:
第一趟 相邻两个数组值进行比较 如果前一个数值大于后一个数值 ,则交换他们的位置
第二趟 相邻两个数组值进行比较 如果前一个数值大于后一个数值 ,则交换他们的位置
第N趟…
第一个for循环控制趟数
第二个for 循环控制每一趟相邻两个数组元素的比较
代码实现:
var m=new Array(1,9,18,3,7,0,12);
for(var i=0;i< m.length;i++)
{ var temp=null;
for(var k=0;k< m.length;k++ )
{
if(m[k]>m[k+1]){
temp=m[k];
m[k]=m[k+1];
m[k+1]=temp;
}
}
}
console.log(m);
结果:0 1 3 7 9 12 18
2.选择排序
工作原理:
第一趟 数组中m[0] 与数组后面的元素进行比较 如果m[0]大于后面数值 ,则交换他们的位置
第二趟 数组中m[1] 与数组后面的元素进行比较 如果m[1]大于后面数值 ,则交换他们的位置
第n趟 数组中m[n-1] 与数组后面的元素进行比较 如果m[n-1]大于后面数值 ,则交换他们的位置
第一个for循环控制趟数
第二个for循环控制每一趟中 被比较数字 和后面数字之间的比较
代码实现:
var m=new Array(1,9,18,3,7,0,12);
for(var i=0;i< m.length;i++)
{ var temp=null;
for(var k=i+1;k< m.length;k++)
{
if(m[i]>m[k])
{
temp=m[i];
m[i]=m[k];
m[k]=temp;
}
}
}
console.log(m);
结果:0 1 3 7 9 12 18
3.快速排序
工作原理:
选处2数组的基准值(length/2) 让其与数组的其他元素进行比较,如果小于基准值则放在left[]数组,否则放在right[]数组
left[]数组和right[]数组继续调用上述方法,直至数组长度小于2
代码实现:
var str = new Array(1, 9, 18, 3, 7, 0, 12);
function kp(m) {
if (m.length < 2) {
return m;
}
var left = [];
var right = [];
var n = parseInt(m.length / 2);//js中强制类型转化(只有对string类型,函数才能正常运行)parseInt();parsefloat();
var k = m.splice(n, 1)[0];
for (var i = 0; i < m.length; i++) {
if (m[i] >= k) {
right.push(m[i]);
}
else {
left.push(m[i]);
}
}
return kp(left).concat(k).concat(kp(right));
}
console.log(kp(str));
4.数组对象中sort()方法
var m=[4,8,2,10,0,9,7];
var a=m.sort(function(a,b){
return a-b;
});
console.log(a);
结果:0 2 4 7 8 9 10