javascript--算法
程序分为两大部分:
1.数据结构(业务逻辑)
2.算法
a. 数组排序:
1.冒泡排序:
升序:从小到大
降序:从大到小
eg: 定义一个数组a[ 2,6,4,8,3,9,5,1,10,0] ,按其升序进行排列
冒泡排序法:
var a = [ 2, 6, 4, 8, 3, 9, 5, 1, 10, 0 ];
for ( var i = 0; i < a.length - 1; i++){
for( var j = 0; j < a.length - 1 - i; j++){
if( a[j] > a[j + 1]) {
var temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for ( var i = 0; i < a.length; i++) {
document.write(a[i] + '<br>');
}
选择排序法
var a = [ 2, 6, 4, 8, 3, 9, 5, 1, 10, 0 ];
for ( var i = 0; i < a.length - 1; i++) {
min = a[i];
index = i;
for ( var j = i + 1; j < a.length; j++) {
if(min > a[j]) {
min = a[j];
index = j;
}
}
if(i != index) {
var temp = a[i];
a[i] = a[index];
a[index] = temp;
}
}
for( var i = 0; i < a.length; i++) {
document.write(a[i] + ' ');
}
//或者调用 sort() 方法
a.sort();
使用sort()方法需要注意的是 sort()方法是根据字符串大小进行比较的,若要按照数值的大小对数字进行排序
,就必须使用一个排序函数
eg: 定义一个数组a[ 2,6,4,8,3,9,5,1,10,0] ,使用sort()按其升序进行排列
var a = [ 2, 6, 4, 8, 3, 9, 5, 1, 10, 0 ];
function sortNum( b, c ){
return b - c;
}
/*若 b 小于 c,在排序后的数组中 b 应该出现在 c 之前;
若 b 等于 c,则返回 0;
若 b 大于 c, 则返回一个大于 0 的值;
*/
a.sort(sortNum);
for ( var i = 0; i < a.length; i++ ){
document.write( a[i] + '<br>');
}
定义一个数组a[ 2,6,4,8,3,9,5,1,10,0] ,按其降序进行排列
var a = [ 2, 6, 4, 8, 3, 9, 5, 1, 10, 0 ];
for ( var i = 0; i < a.length - 1; i++){
for( var j = 0; j < a.length - 1 - i; j++){
if( a[j] < a[j + 1]) {
var temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for ( var i = 0; i < a.length; i++) {
document.write(a[i] + '<br>');
}
//或者调用 reverse() 方法
使用 reverse() 方法需要注意的是 它并没有将数组元素进行降序排序,只是将数组元素进行反转;即数组元素头部-->尾部,数组元素尾部-->头部
若要实现降序,可以先降数组元素进行升序排列,再调用 reverse() 方法;
eg:定义一个数组a[ 2,6,4,8,3,9,5,1,10,0] ,使用 reverse() 方法按其降序进行排列
var arr = [ 2, 6, 4, 8, 3, 9, 5, 1, 10, 0 ];
function sortNum( a, b){
return a - b;
}
arr.sort(sortNum);
arr.reverse();
for( var i = 0; i < arr.length; i++) {
document.write(arr[i] + '<br>');
}