当前位置:首页 > 日记 > 正文

js排序与重组的实例讲解

js排序与重组的实例讲解

前几天同学发给我一个问题,思路想整理一下,也供大家参考。实际上这道题本质就是考察的是去重与排序的问题。好了闲话少说,上题。

function input(req){if(req<=100){var arr=[],arr1=[];for(var i=0;i<req;i++){var num=parseInt(Math.random()*(1000-1)+1);arr.push(num);if(arr1.indexOf(arr[i])==-1)arr1.push(arr[i]);}for(var n=0;n<arr1.length-1;n++){for(var m=n+1;m<arr1.length;m++){if(arr1[n]>arr1[m]){var temp=arr1[n];arr1[n]=arr1[m];arr1[m]=temp;}}}console.log(arr.length);console.log(arr.join(' ')); console.log(arr1.length);console.log(arr1.join(' ')); }else{alert("不好意思,你输入的数已经大于100了");} }

解析:关于排序的,有冒泡排序,快速排序,插入排序,希尔排序,选择排序,归并排序,堆排序,基数排序,计数排序,桶排序等等。

关于数组去重的实现方法,常用的有遍历数组,对象键值对,数组下标判断,排序后相邻去除法,优化遍历数组等等。

本题排序方法采用一种最基本的方法就是冒泡方法,冒泡方法实质就是相邻排序了,依次比较相邻的两个值,如果我比你小,我就在你前面,反之就在你后面,按照这种方法多次,直到顺序正确。

去重的方法也是采用最基本的遍历数组法,思路是新建立一个数组,值不在数组中,就填入数组,简单粗暴。哈哈。采用了js中的indexof()方法,indexof()方法原意指的是可返回某个指定的字符串在字符中首次出现的位置。但是它也有这样的一个性质,注意:如果要检索的字符串没有出现,则返回-1,这正是我们需要的。

看题干:N个1到1000之间的随机整数(N小于等于100)

整数:嗯嗯此时应该想到这个parseInt()方法;

随机:想到了Math.random();

1到1000的随机整数: var num=parseInt(Math.random()*(1000-1)+1);这种组合的方法蛮有效果的。

填入数组:arr.push()方法;接下来判断原数组的数是否在新数组arr1中,if(arr1.indexOf(arr[i])==-1) arr1.push(arr[i]);

填入数组的事已经完成了,接下来就是排序的问题了。冒泡(简单粗暴)。生成随机数组的个数,就用数组的长度喽,arr.length.

还有提到的是用空格隔开:join(' ');

在chrome,f12下跑的结果如下:

去重和排序后的结果

以上这篇js排序与重组的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

相关文章

Vue ElementUI之Form表单验证遇到

Vue ElementUI之Form表单验证遇到

表单验证,电脑软件,Vue,ElementUI,Form,首先说一下 我在form表单里面遇见的坑:1.例如我要给后台传的不是对象,而是一个数组,怎么写验证?2.比如我有四个弹出框,都要做验证,这个时候就要注意了,每一个弹出框的ref都不能给的一样,并且一定要与当前弹框…

vue打包后显示空白正确处理方法

vue打包后显示空白正确处理方法

方法,显示,正确处理,空白,电脑软件,在项目中很多时候需要用到vue打包成html不需要放在服务器上就能浏览。根据官网打包出来的html直接打开是显示空白。vue打包后显示空白正确处理方法是1、找到配置文件修改这样打包处理可以打开但是页面样…

微信小程序(六):列表上拉加载下拉刷新

微信小程序(六):列表上拉加载下拉刷新

下拉刷新,列表,上拉加载,示例,程序,1.列表(本部分内容出入官方文档)对于这个功能,微信小程序中并没有提供类似于Android中listview性质的控件,所以我们需要使用 wx:for 控制属性绑定一个数组,用数组中各项的数据重复渲染该组件,来达到列表的效果…

apache2.0x 开启gzip压缩和http缓

apache2.0x 开启gzip压缩和http缓

配置,缓存,压缩,方法,电脑软件,先谈gzip的配置方法,在apache2.0以上(包括apache2.0)的版中gzip压缩使用的是mod_deflate模块,下面是具体配置步骤:第1步LoadModule deflate_module modules/mod_deflate.soLoadModule headers_module modules/mod_…

从零开始学习Node.js系列教程六:Eve

从零开始学习Node.js系列教程六:Eve

事件,学习,教程,方法,示例,本文实例讲述了Node.js EventEmitter发送和接收事件的方法。分享给大家供大家参考,具体如下:pulser.js/* EventEmitter发送和接收事件 HTTPServer和HTTPClient类,它们都继承自EventEmitter EventEmitter被定义在Node…

JS 实现banner轮播效果 | 鼠标事件

JS 实现banner轮播效果 | 鼠标事件

鼠标事件,效果,电脑软件,JS,banner,一.要实现的效果1.点击左右可切换图片2.点击小圆点 可切换图片二.效果图三.代码1.css<style type="text/css">body,img,span,ul,li{margin: 0;padding: 0;}#div1{width: 600px;height: 350px;margin: 1…

配置IIS服务器,支持sis、SISX、3GP

配置IIS服务器,支持sis、SISX、3GP

服务器,支持,配置,文件下载,电脑软件,配置IIS服务器,支持sis、SISX、3GP、ADP、AMR、JAD、JAR、MMF、MFM、PMD、UMD等文件下载 问:如何开通WAP网站呢,让更多朋友通过手机来浏览的我网站呢?答:浏览WAP网站与WEB网站都是需要服务器端和终端支持的,W…

HTTP 错误 500.19 - Internal Serv

HTTP 错误 500.19 - Internal Serv

错误,解决办法,详解,电脑软件,HTTP,HTTP 错误 500.19 - Internal Server Error最近做项目出现了这个错误,经过同事之间的讨论未能解决,之后百度一下找到了解决方法,这里就说下希望大家遇到这种错误可以顺利解决。无法访问请求的页面,因为该页的…

服务器上映射出20M的磁盘且无法分

服务器上映射出20M的磁盘且无法分

磁盘,格式化,服务器,射出,电脑软件,问题描述:用户反映SureFibre 640存储在服务器上自动映射出20M的磁盘,且无法分区格式化、更加无法使用。原因分析:目前在销的SureFibre系列存储,都具备带内管理的功能,如果启用了带内管理而没有安装带内管理代…

正则表达式d元字符 | 相对于数字0-

正则表达式d元字符 | 相对于数字0-

元字符,数字,正则表达式,相对于,电脑软件,正则表达式\d元字符:\d元字符可以匹配数字字符,等价于"[0-9]"。语法结构:构造函数方式:new RegExp(\\d)对象直接量方式:/\d/浏览器支持:IE浏览器支持此元字符。火狐浏览器支持此元字符。谷歌…

详解JavaScript数组过滤相同元素的

详解JavaScript数组过滤相同元素的

元素,数组,过滤,种方法,详解,方法一:比较内层循环变量的值.var arr = [1, 2, 3, 1, 3, 4, 5, 5];var resultArr = [];for (i = 0; i < arr.length; i++) { for (j = 0; j < resultArr.length; j++) { if (resultArr[j] == arr[i]) { …