js数组内数字按大小排序实现函数

摘要:
正常气泡排序:函数evlabc{//排序大小vari=j=t=0;对于{for{if{//相邻元素比较t=a[i];a[i]=a[j];a[j]=t;}安慰日志;}}返回;}vararr=[5100,6,3,-12];evlabc;气泡排序优化版本:函数sort{for{for{if{//两个相邻元素的比较varhand=arr[j];arr[j]=arr[1];arr[j+1]=hand;}安慰日志;}}returnarr;}varar=[5100,6,3,-12];分类由此可以看出,两个相邻的数字依次进行比较,大的数字被放回,小数被向前移动。也就是说,位置交换首先实现小数,最后实现大数。如果排序从大到小,请将If改为If以简化排序版本:函数sortNumber(a,b){//升序返回a-b}vararr=[5100,6,3,-12];arr.sort;关于sort()函数http://www.w3school.com.cn/jsref/jsref_sort.aspsort当函数不使用参数时,数组中的元素按字母顺序排序。

正常冒泡排序:

function evlabc(a) { //排序大小
    var i = j = t = 0;
    for (i = 0; i < a.length; i++) {
        for (j = 0; j < a.length; j++) {
            if (a[i] <a[j]) {// 相邻元素两两对比
                t =a[i];
                a[i] =a[j];
                a[j] =t;
            }
            console.log('i:' + i + ' j:' + j + '  当前数组为:' +a);
        }
    }
    returna;
}
var arr = [5, 100, 6, 3, -12];
evlabc(arr);

冒泡排序优化版:

function sort(arr){
    for(var i=0;i<arr.length-1;i++){
        for(var j=0;j<arr.length-i-1;j++){
            if(arr[j]>arr[j+1]){// 相邻元素两两对比
                var hand = arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=hand;
                
            }
           console.log('i:' + i + ' j:' + j + '  当前数组为:' + arr);
        }
    }
    return arr;
}
var ar = [5,100,6,3,-12];
sort(ar);

由此可以看出,将相邻的两个数依次相比较,大数向后放,小数向前移。即是位置交换实现小数在前,大数在后。经过10次比较后,最终实现重排。

如果从大到小排序的话,则将if(arr[j]>arr[j+1])改为if(arr[j]<arr[j+1])即可

极简sort版:

functionsortNumber(a,b){//升序
    return a -b
}
var arr = [5, 100, 6, 3, -12];
arr.sort(sortNumber);

关于sort()函数http://www.w3school.com.cn/jsref/jsref_sort.asp

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

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

免责声明:文章转载自《js数组内数字按大小排序实现函数》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Error:(5, 45) java: 程序包org.springframework.boot.test.context不存在 解决ORA12705: Cannot access NLS data files or invalid environment specified下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Pycharm Debug功能详解

左键单击代码编辑区域中的行号以在调试模式下运行代码:单击左上角工具栏上的调试图标(bug图)。方法2:在调试模式下运行后,1。代码编辑区域中的蓝色条是当前程序运行的位置,即c=add(a)应该运行,但尚未运行。2.代码编辑区域中的深红色条是当前程序设置的所有断点行。3.左下方是程序堆栈,进入fun()函数。4.右下方是可变显示区域1。跳转到当前断点(在断点之...

IDEA 运行键是灰色

版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议。转载请附上原始来源链接和本声明。本文链接:https://blog.csdn.net/Butterfly_resting/article/details/89388149原因是我们的新项目没有选择源目录,如图所示:解决方案:IDEA提供了选择源目录的快速设置。右键单击src并选择MarkDire...

Android开发者选项——Gpu呈现模式分析

对于Android用户来说,无论你用的什么品牌的手机,在开发者选项中都能发现“玄学曲线”的开关,之所以称其为玄学曲线,还是因为它被很多网友用于测试一个说不清道不明的东西——流畅度。说到玄学曲线其实它的真名叫做“ProfileGPURendering”,在中文安卓系统下译为“GPU显示配置文件”或“GPU呈现模式分析”等,根据不同厂商定制系统叫法稍有不同。...

WPF绑定功能常用属性介绍

这是实质上是System.Windows.Data.BindingMode.OneWay绑定的一种简化形式,它在源值不更改的情况下提供更好的性能。确定依赖属性绑定在默认情况下是单向还是双向的编程方法是:使用System.Windows.DependencyProperty.GetMetadata获取属性的属性元数据,然后检查System.Windows.Fr...

QT学习之如何在QToolBar中添加带图标的QToolButton并设置图标大小

在网上查到了三种方法,找到一种比较好理解的。图标存放位置可在工程文件夹里创建自命名的文件夹如"res",再在根目录下创建qrc文件,如图:然后我们需要对qrc文件进行编辑:res/1.pngres/2.pngres/3.pngres/4.pngres/5.pngres/6.pngres/7.png这里的"res"是自己命名的存放图标的目录。接着我们需要在项目...

「Docker」关于 Docker volume 挂载时文件或文件夹不存在的问题

背景:Dockervolume允许我们在启动Docker容器时动态装载一些文件以覆盖图像中的原始文件。然而,当我们将主机上不存在的文件夹或文件装载到容器时会发生什么?由于文件装载仅覆盖单个文件,而不会影响容器中同一文件夹中的其他文件,因此通常用于装载配置文件,以在运行时动态修改默认配置。如果您尝试提前在主机/文件夹路径/A中放置一些内容,您会发现在容器启动后...