JavaScript学习之排序

来源:互联网 发布:淘宝狗粮店铺简介文案 编辑:程序博客网 时间:2024/06/05 22:59

数组的排序

1.数组排序
arr1=[4,5,6,2,3,8,1,0,7];        function add(a,b){            return(a-b)        }        document.write(arr1.sort(add));//从小到大排列。a在js中表示前一个数,b表示后一个数,我理解为若差值为负,则顺序不变,若差值为正,则a与b交换顺序        function jian(a,b){            return(b-a)        }            document.write("<br />"+arr1.sort(jian));//从大到小排。

sort() 方法用于对数组的元素进行排序。
语法:arrayObject.sort(sortby);参数sortby可选。规定排序顺序。必须是函数。
注:如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:

若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。

若 a 等于 b,则返回 0。

若 a 大于 b,则返回一个大于 0 的值。
输出:

"0,1,2,3,4,5,6,7,8""8,7,6,5,4,3,2,1,0" 
2.简单排序
function compare(value1,value2){            return value1>value2 ? 1 : -1;//如果value1>value2,则为1        }        var arr = ['34', '45', '23', '56', '88', '21', '16', '55'];        alert(arr.sort(compare).tostring());

此处sort( )接受一个compare函数作为参数,compare可以比较任意两个实数的大小

输出:

"16,21,23,34,45,55,56,88"
3.冒泡排序

思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。 至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。

var arr=[12,5,2,3,8,5,6,1,0];//document.write(arr);var len=arr.length;var tmp=0;function bubbleSort(arr){    //i循环控制循环周期数,j循环控制项与项之间的排序比较,每循环一个周期都是将最大的一个数放在了末尾    for(i=0;i<len;i++){        for(j=0;j<len-i;j++){            if(arr[j]>arr[j+1]){                tmp=arr[j];                arr[j]=arr[j+1];                arr[j+1]=tmp;//交换数值                }            }        }     return arr;}        document.write("<br/>"+bubbleSort(arr));//输出结果

输出:

"0,1,2,3,5,5,6,8,12"
原创粉丝点击