js中两种实现排序的方法

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width; initial-scale=1.0; minimum-scale=1.0; maximum-scale=2.0" />
<title>冒泡排序-叶子制作</title>
<meta name="description" content="冒泡排序" />
<meta name="keywords" content="叶子" />
<style>
body{width:500px;margin:50px auto;}
span{display:inline-block;margin-bottom:20px;}
</style>
</head>
<body>
原数组:<span id="beforAry">100,12,3,4,5,6,2</span><br/>
排序之后的数组:<span id="afterAry"></span>
</body>
<script type="text/javascript">

/*方法一:

  var beforeTxt = document.getElementById("beforAry").innerHTML;
  var afterTxt = document.getElementById("afterAry");
  var myAryTxt = beforeTxt.split(",");
  var copeAry = myAryTxt.concat();
  var newAry = copeAry.sort(function(a,b){
    return a-b;
  });
  afterTxt.innerHTML = newAry;
  //注意:该处排序并不是数字的排序,而是字符串的排序
  //该方法较为简单,不做过多解释;
*/

/*方法二:
  *思想
  * 每轮将最大的放在后面,所以n个数比较n-1轮(也就是将n-1个最大数放在后面)就可以了 --i从0开始;
  * 每轮比较多少次,不用跟自己比,最多n-1次;
  * i=0, n-1-0 (--0将放到后面的除去)
  * i=1, n-1-1
  * i=2, n-1-2
  * ...
  * i=i, n-1-i
*/
var beforeTxt = document.getElementById("beforAry").innerHTML;   //获取想要排序的字符串数字;
var afterTxt = document.getElementById("afterAry");         //获取想要将排好的数字放置的位置;
var myAryTxt = beforeTxt.split(",");                   //将获取的字符串进行分割;
var myAry1 = [];                              //声明一个空数组(为放置得到的数组做准备)
for(var i=0;i<myAryTxt.length;i++){                  //利用循环将分割的分别获取到;
  var myAry = Number(myAryTxt[i]);                  //将获取的每个字符数字都转化成纯数字;
  myAry1.push(myAry);                        //将或有转化的数字当做数组元素存储;
}
var copeAry = myAry1.concat();                      //复制一个数组;
function sortAry(ary){                         //指定函数
  for(var i=0;i<ary.length-1;i++){                       //i是控制轮数的
    for(var j=0;j<ary.length-1-i;j++){                     //j控制每轮比较多少次;
      if(ary[j]>ary[j+1]){                                        //如果当前的数字小于下一个,则调换位置;
        var temp = null;
        temp = ary[j];
        ary[j] = ary[j+1];
        ary[j+1] = temp;
      }
    }
  }
  return ary;                                                                              //将排好序的数组返回;
}
var newAry = sortAry(copeAry);                                                     //执行函数
afterTxt.innerHTML = newAry;                                                       //将得到的数组放到指定位置;
</script>
</body>
</html>

时间: 2024-11-01 23:30:49

js中两种实现排序的方法的相关文章

关于js中两种定时器的设置及清除

1.JS中的定时器有两种: window.setTimeout([function],[interval]) 设置一个定时器,并且设定了一个等待的时间[interval],当到达时间后,执行对应的方法[function],当方法执行完成定时器停止(但是定时器还在,只不过没用了); window.setInterval([function],[interval]) 设置一个定时器,并且设定了一个等待的时间[interval],当到达时间后,执行对应的方法[function],当方法执行完成,定时器

JdbcTemplate查询数据中两种处理结果集方法的简单比较

public List<Cat> listCats(){ //多条数据查询 String sql = "select id, name, description, mother_id, createDate from tbl_cat"; /*//方法1.使用RowMapper<Cat>处理结果集 return jdbcTemplate.query(sql, new RowMapper<Cat>(){ @Override public Cat mapR

js中两种for循环的使用

针对两种for循环的使用 1. for in循环的使用环境     可用在字符串.数组.对象中, 需注意:其中遍历对象得到的是每个key  的value值 2. for 变量递加的方式               可用在字符串.数组中    其中对象不能遍历 以下是测试代码   可以挨个测试以下 <script> // var n = '1233445' // var n = [1,2,3,4] var n = {name: 'wangweipeng', age: 23}; // for (v

ajax请求中 两种csrftoken的发送方法

通过ajax的方式发送两个数据进行加法运算 html页面 <body> <h3>index页面 </h3> <input type="text" name="cal_1">+ <input type="text" name="cal_2">= <input type="text" name="cal_3"> <

js中两种定时器,setTimeout和setInterval的区别

setTimeout只在指定时间后执行一次,代码如下: <script> //定时器 异步运行 function hello(){ alert("hello"); } //使用方法名字执行方法 var t1 = window.setTimeout(hello,1000); var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法 window.clearTimeout(t1);//去掉定时器 </

objective-C 中两种实现动画的方法

第一种方法: [UIView beginAnimations:@"Curl"context:nil];//动画开始 [UIView setAnimationDuration:1.25];//动画持续时间 [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];//动画速度 [UIView setAnimationTransition: UIViewAnimationTransitionCurlUp//类型 forView:sel

[转]js中几种实用的跨域方法原理详解

转自:js中几种实用的跨域方法原理详解 - 无双 - 博客园 这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被当作是不同的域. 下表给出了相对http://store.company.com/dir/page.html同源检测的结果: 要解决跨域的问题,我们可以使用以下几种方法: 一.通过jsonp跨域 在js中,我们直接用XMLHttpRequ

MyEclipse取消验证Js的两种方法

MyEclipse取消验证Js的两种方法 作者: 字体:[增加 减小] 类型:转载 通过js写一个web工程的相关页面时感觉很卡,修改内存也不行下面有两种解决方法,大家可以尝试下 前言:有时我们通过js写一个web工程的相关页面时感觉很卡,修改内存也不行下面有俩种解决方法: 1. 选中当前工程—properties—MyEclipse—validation—Excluded Resource下找到须要作废验证的文件或者文件夹就可以了. 2. 找到在项目路径下面的.project文件中配置了一些验

js中几种实用的跨域方法原理详解(转)

这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被当作是不同的域. 下表给出了相对http://store.company.com/dir/page.html同源检测的结果: 要解决跨域的问题,我们可以使用以下几种方法: 一.通过jsonp跨域 在js中,我们直接用XMLHttpRequest请求不同域上的数据时,是不可以的.但是,在页面上引入不同