js中数组排序的五种方式「建议收藏」

js中数组排序的五种方式「建议收藏」1.Javascript的sort方法,本方法的原理是冒泡排序,这里默认从小到大排序<script> vararr=[23,13,34,65,65,45,89,13,1]; varnewArr=arr.sort(function(a,b){ returna-b; }); console.log(newArr);//输出结果[1,13,13,23,34,45,65,65,89]</script>2….

大家好,又见面了,我是你们的朋友全栈君。

下面主要介绍了数组排序的五种方式——sort()方法、选择排序、冒泡排序、插入排序和快速排序

刚兴趣的朋友,可以往下看哦。

1.js中的sort()方法

基本思想:根据提供的排序规则,对数组元素进行排序。
                  使用数字排序,必须通过一个函数作为参数来调用。

var arr = [123,203,23,13,34,65,65,45,89,13,1];
function func(a,b){
	return a-b;
}
console.log(arr.sort(func)); //(11) [1, 13, 13, 23, 34, 45, 65, 65, 89, 123, 203]

2.选择排序

基本思想:首先在未排序数组中找到最小(大)元素,存放在数组的起始位置。
                  再从剩余数组元素中继续寻找最小(大)元素,返回放在已排序数组的末尾
                  重复第二步,直到所有元素都排序完成
动画演示:

js中数组排序的五种方式「建议收藏」

var arr = [123,203,23,13,34,65,65,45,89,13,1];
for(var i=0;i<arr.length;i++){
	for(var j=i+1;j<arr.length;j++){
		//如果第一个比第二个大,就交换他们两个位置
		if(arr[i]>arr[j]){
			var temp = arr[i];
			arr[i] = arr[j];
			arr[j] = temp;
		}
	}
}
console.log(arr); //(11) [1, 13, 13, 23, 34, 45, 65, 65, 89, 123, 203]

3.冒泡排序

基本思想:一次比较两个相邻的数,如果不符合规则互换位置,一次比较就能够将最大或最小的值放在数组最后一位
                  继续对除【最后一位】之外的所有元素重复上述过程
动画演示:

js中数组排序的五种方式「建议收藏」

var arr = [123,203,23,13,34,65,65,45,89,13,1];
for(var i=0; i<arr.length-1; i++){
	//每一轮比较要比多少次
	for(var j=0; j<arr.length-1-i; j++){
	    //如果第一个比第二个大,就交换他们两个位置
	    if(arr[j]>arr[j+1]){
	        var temp = arr[j];
	        arr[j] = arr[j+1];
	        arr[j+1] = temp;
	    }
	}    
}
console.log(arr); //(11) [1, 13, 13, 23, 34, 45, 65, 65, 89, 123, 203]

4.插入排序

基本思想:将数组第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
                  从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。
                  如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。
动画演示:

js中数组排序的五种方式「建议收藏」

var arr = [123,203,23,13,34,65,65,45,89,13,1];
var preIndex, current;
for(var i=1;i<arr.length;i++){
	preIndex = i-1;
	current = arr[i];
	while(preIndex>=0 && arr[preIndex]>current) {
	    arr[preIndex+1] = arr[preIndex];
	    preIndex--;
	}
	arr[preIndex+1] = current;
}
console.log(arr); //(11) [1, 13, 13, 23, 34, 45, 65, 65, 89, 123, 203]

5.快速排序(依托递归函数)

基本思想:在已知数据集合中随便去一个基准(pivot)
                  将其余数据以基准为中心,大于分放右边,小于的放左边
                  将左右两个子集重复以上两个步骤
动画演示:

js中数组排序的五种方式「建议收藏」

var arr = [123,203,23,13,34,65,65,45,89,13,1];	
//创建快速排序函数
function quickSort(tempArr){
	//递归终止条件
	if(tempArr.length<=1){
		return tempArr;
	};
	//取基准
	var pivotIndex = Math.floor(tempArr.length/2);
	var pivot = tempArr.splice(pivotIndex,1);
	//分左右
	var leftArr = [];
	var rightArr = [];
	for(var i=0;i<tempArr.length;i++){
		if(tempArr[i]>pivot){
			rightArr.push(tempArr[i]);
		}else{
			leftArr.push(tempArr[i]);
	    };
	};
	return quickSort(leftArr).concat(pivot,quickSort(rightArr));
};
console.log(quickSort(arr)); //(11) [1, 13, 13, 23, 34, 45, 65, 65, 89, 123, 203]

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138621.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月6日 下午5:40
下一篇 2022年5月6日 下午6:00


相关推荐

  • Pycharm2020.1安装中文语言插件教程,不需要汉化

    Pycharm2020.1安装中文语言插件教程,不需要汉化方法一(在搜索不到插件):1.安装好Pycharm并打开Pycharm2.打开File,找到Settings并打开3.打开Settings中的Pulgins,选择Marketplace,搜索chinese出现下图这个就可以在线安装,不出现离线安装(方法二)方法二(推荐):1.查看Pycharm版本help–about2.打开中文插件的下载地址(https://plugins.j…

    2022年5月9日
    305
  • apache2服务器_apache2配置

    apache2服务器_apache2配置摘要:在本地做WEB开发,同时多个项目,希望将每个项目都使用一个域名指向各自的项目根目录。要实现这样的目的,虚拟主机是必须要掌握的。本篇从一个小白用户的视角开始从零开始深入了解并实例配置演示。

    2026年1月20日
    5
  • CBoard框架使用总结一[通俗易懂]

    CBoard框架使用总结一[通俗易懂]文章内容1.功能介绍2.源码结构分析3.总结1.功能介绍1.1.整体界面(CBoard支持中英文版本)左侧功能依次为:已创建的数据面板:包含已经创建的DashBoard配置功能:DashBoard配置功能集管理:主要是用户管理(Spring-Security)1.2.DashBoard配置功能主要包括:数据源定义:支持Elasticsearch、saiku、TextF

    2025年7月24日
    5
  • 5G学习笔记:NSA和SA

    5G学习笔记:NSA和SA大家好,我是小枣君。第一个5G正式标准马上就要发布了,相信大家一定都在翘首企盼。之前我曾经和大家介绍过,去年12月份的时候,我们其实已经发布了“半个”5G标准。是的没错,那个时候是“非独立组网(NSA)”的5G标准。而我们现在正在等的,是“独立组网(SA)”的5G标准。关于非独立组网和独立组网,NSA和SA,虽然大家都听了很多次,但很少有人能真正搞懂它们到底是怎么…

    2025年7月31日
    6
  • 定时任务cron表达式使用详解

    定时任务cron表达式使用详解项目中有时会需要定时去触发一些任务 Java 实现定时任务一般有三种方法 JDK 自带的 Timer 以及 JDK1 5 新增的 ScheduledExe Quartz 定时器 简单却强大的 JAVA 作业调度框架 Spring3 0 以后自带的 task 任务调度 可以将它看成一个轻量级的 Quartz 而且使用起来比 Quartz 简单许多 这里不去细谈三种定时任务实现的原理 可以自行去百度查看 下面主要说一下在设置定时任务时用到的 cron 表达式 Linux 系统中内置 cron 进程 通过 cron

    2025年6月3日
    5
  • 如何做小册子在a4纸上出四页_一年级政治小册子内容

    如何做小册子在a4纸上出四页_一年级政治小册子内容打印小册子(一张A4纸4页内容)步骤分享

    2025年9月21日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号