最近在做个项目,主要涉及到页面上面的排序,有个特点,这个排序除了涉及到数字,汉字排序,还有'-',这是符号是因为无法获取到对应的
数值,在页面上使用'-'进行展示。在进行排序的时候,直接使用了javascript内置的排序算法,就是冒泡排序,基本原理就是,你只要告诉我
如何比较这两个值,它就可以进行冒泡排序。由于数量不是很多,所以还没有太多的涉及到时间和空间复杂度。中间由于这个我被弄晕了好几
次,比如下面是部分的比较结果:
- arrayObject.sort(sortby)
参数 | 描述 |
---|---|
sortby | 可选。规定排序顺序。必须是函数。 |
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
- 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回-1(一个小于 0 的值)
- 若 a 等于 b,则返回 0。
- 若 a 大于 b,则返回1(一个大于 0 的值)
顺序:v1=0.41; v2=-; value=-1;
顺序:v1=-; v2=0.91; value=1;
顺序:v1=-; v2=-; value=0;
顺序:v1=1.26; v2=0.56; value=1 顺序:v1=1.26; v2=2.51; value=-1
从上面的排序结果看,如果是顺序,前面比后面的值大,返回1,表明需要调换位置。如果后面的值要大,则返回-1,不需要调换位置。在对'-'进行排序的时候,进行专门的处理即可。
倒序:v1=1.26; v2=5.47; value=1
倒序:v1=1.26; v2=0.89; value=-1
倒序:v1=-; v2=2.51; value=1;
倒序:v1=-; v2=-; value=1;
倒序:v1=27.77; v2=-; value=-1;
从上面的排序结果看,如果是倒序,前面比后面的值大,返回-1,表明不需要调换位置。如果后面的值要大,则返回1,不需要调换位置。在对'-'进行排序的时候,进行专门的处理即可。