JavaScript数字例子,二分法,冒泡排序
先看一下两个例子:
十个成绩,求总分,最高分,最低分
//输入10个成绩,求总分,最高,最低
var arr=new Array(67,45,56,12,90,98,23,43,56,99,97);
var g=0;
var d=arr[0];//定义最小开始时等于第一个数
var z=0;
for(var i=0;i<arr.length;i++){
z=z+arr[i];
if(arr[i]>g){
g=arr[i];
}if(arr[i]<=d){
d=arr[i];
}
}
alert(z+","+g+","+d);

首先定义出数组,最高分g,最低分d开始时等于数组第一个元素,总分z
然后循环中,首先总分加数组元素
然后判断这个数组元素是否大于最高分,如果是则将这个分数赋给g,如果不是则判断是否小于最低分d,如果是则将此值赋给d
最低分的要点在于开始赋值,如果和总分高分一样初始值为0,则第二个判断中,低分会一直为0,所以要把数组的第一个值赋给d,这样才能判断计算
向数组中添加数据时去重
var arr=Array(2,1,11,2,31);
var s=prompt("请输入学号");
var z=0;
for(var i=0;i<arr.length;i++){
if(s==arr[i]){
z=1;
}
}
if(z==0){
arr.push(s);
}else{
alert("重复");
}
alert(arr);
首先定义数组,输入学号的返回值s,变量z
遍历数组中,判断如果输入的值等于数组中的某个数,将z的值变为1,然后在进行判断,如果z为0,说明输入的数组中没有,写入,否则,提示重复
我们还可以直接调用arr.indexOf()方法来进行查找
arr.indexOf()方法:给他一个值,如果这个值在数组中出现,返回这个值得索引,如果不存在,返回 -1
// 2.往数组里面添加数据的时候去重
var a = parseInt(prompt("请输入一个数字:"));
var arr = new Array(1,2,3,4,5);
alert(arr.indexOf(a)); //判断数据是否在数组里面存在


输入值5,返回5的索引4。
需要注意在这里要用 parseInt() 将输入的值转换为整数。
冒泡排序
将一组无规律的数据按照一定的规律排列下来
冒泡排序的原理:
这是将一组无规律的数据从大到小排列

由此可知冒泡排序的规律:
比较的轮次=数组长度-1
每轮比较的次数=数组长度-轮次
//冒泡排序
var arr=new Array(12,32,54,65,45,23,09,67,91);
var zj=0;
for(i=1;i<arr.length;i++){
for(l=0;l<arr.length-i;l++){
if(arr[l]<arr[l+1]){
zj=arr[l];
arr[l]=arr[l+1];
arr[l+1]=zj;
}
}
}
alert(arr[0]+","+arr[1]+","+arr[2]+","+arr[3]+","+arr[4]+","+arr[5]+","+arr[6]+","+arr[7]+","+arr[8]);

这里的思路是:
首先定义出数组,在定义一个中间变量zj
然后一个for循环控制比较的轮次,所以这里i从1开始,循环中i<1也就是循环的轮次是数组长度-1,然后里面在嵌套一个for循环控制每一轮比较的次数,这里l=0,l小于数组长度减去i也就是轮数。
当然,以上是运行次数最少的方案,如果不考虑运行效率,可以i,l初始值都为0,并且都小于数组长度,其结果是一样的。
二分法
在数组里查找数据,找到数据所在的索引
// 在数组里面查找数据,找到数据所在位置的索引
var arr = new Array(1,2,3,4,5,6,7,8,9,10);
var a = 2;
//方法一
alert(arr.indexOf(a));
//方法二
for(var i=0;i<arr.length;i++){
if(a==arr[i]){
alert(i);
}
}
// 二分法查找数据,数组必须是排好序的
var minx = 0; //定义最小值
var maxx = arr.length-1; //定义最大值
while(true){ //不确定循环次数,使用while玄幻
//定义中间值等于最大值和最小值和的一半
var zjx = parseInt((minx+maxx)/2);
if(zjx==minx){ //中间值等于最小值的情况下
if(a==arr[zjx+1]){
alert(zjx+1); //如果要查找的数据等于中间值+1,也就是中间值右边得数,输出值,跳出循环
break;
}
}
if(a==arr[zjx]){
alert(zjx); //如果中间值等于要查找的数,输出
break;
}else if(a>arr[zjx]){ //如果中间值大于要查找的数
minx = zjx; //中间值赋给最小值,然后继续循环
}else{
maxx = zjx; //如果中间值小于要查找的数,中间值赋给最大值,然后继续循环
}
}

这三种方法都可以找到数据的索引,这里着重看一下二分法
二分法查找的前提;数组必须为有序
思路:找到数组的中间数zjx和要查找的数a,若a<zjx,则要查找的数在中间数zjx的左边,就把数组二分,只在左边查找,右边同理,直到找到要查找的数。
二分法对于数据特别多的情况能极大的节约效率。
在上面的二分法中:
首先定义最大值 maxx,最小值 minx
中间值 zjx 也可以再循环中定义
我们不能确定循环的次数,所以这里使用 while 循环
首先找出中间值,中间值等于最大值和最小值的和除以2
如果要查找的数等于中间值,输出
如果中间值大于要查找的数,说明要查找的数比中间值小,在中间值左边,然后把中间值作为最大,继续循环
如果中间值小于要查找的数,说明要查找的数比中间值大,在中间值右边,然后把中间值作为最小,继续循环
如果遇到还剩下两个数的情况,这两个值就一个大的是最大值,一个小的是最小值,取出的中间值因为在程序中去掉了分数,只留整数,所以中间值也就是最小值,这时判断要查找的数是否是中间值即最小值右边的数即最大值,如果是,输出
JavaScript数字例子,二分法,冒泡排序的更多相关文章
- JavaScript小例子:复选框全选
JavaScript小例子:复选框全选 这只是一个小例子,很简单,但是这个功能还是很常用的: 实现后效果如图: JavaScript代码: <script type="text/jav ...
- javascript数字验证输入
javascript数字验证功能: <html> <body> <p>请输入数字.如果输入值不是数字,浏览器会弹出提示框.</p> <input ...
- python 二分法例子及冒泡排序
#!/usr/bin/env python #-*- coding:utf-8 -*- def binary_search(source_data,find_nu): mid = len(source ...
- javascript 数字格式化
对数字进行格式化输出,是非常有意义的一件事情,例如许多时候,我们希望一个数字能够输出为指定格式的字符串,拿25.9878来说,我们可能会希望它能保留两位小数来说出,即结果为25.99,或者对于0.34 ...
- [Java Web] 4、JavaScript 简单例子(高手略过)
内容概览: JavaScript简介 JavaScript的基本语法 JavaScript的基本应用 JavaScript的事件处理 window对象的使用 JavaScript简介: JavaScr ...
- (转载)javascript经典例子
(转载)http://www.blogjava.net/hadeslee/archive/2007/11/24/161778.html 一.验证类1.数字验证内1.1 整数1.2 大于0的整数 (用于 ...
- javascript实用例子
js学习笔记,别错过!很有用的. /////////////////////////////////////////////////////////////////////////////////// ...
- JavaScript数字精度丢失问题总结
本文分为三个部分 JS 数字精度丢失的一些典型问题 JS 数字精度丢失的原因 解决方案(一个对象+一个函数) 一.JS数字精度丢失的一些典型问题 1. 两个简单的浮点数相加 0.1 + 0.2 != ...
- JavaScript数字精度上代码。
/**不能超过 9007199254740992 * floatObj 包含加减乘除四个方法,能确保浮点数运算不丢失精度 * * 我们知道计算机编程语言里浮点数计算会存在精度丢失问题(或称舍入误差), ...
随机推荐
- SQL Server 初识游标
---恢复内容开始--- 游标:游标是一种能从包含多个数据的结果集每次提取一条的机制 游标的特点是: 检索得到的数据集更加灵活 可有针对性的对数据进行操作 拥有对数据进行删除和更新的能力 为何使用游标 ...
- 开始python成长之路
因为某种特殊原因很不幸的得了脱髓鞘 正要去实习 大展身手 甚至公司都选好了 可就在这个节骨眼..得了传说中的脱髓鞘.经过一年的修养 我决定还是要站起来 毕竟一生的时间很长 这一段时间 我都在玩游戏赚钱 ...
- React服务器端渲染值Next.js
昨天leader给分配了新任务,让熟悉一下ssr,刚开始有点懵,啥玩意?百度了一下,不就是服务器端渲染(server side render,简称: ssr). ssr简介 服务端渲染一个很常见的场景 ...
- JavaScript学习笔记(十四)——对象
在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...
- h5前端流行的框架
很多时候别人问你,上手的框架有哪些,其实我们都是知道的,只是一时却也说不上哪些比较,这里想给大家介绍一下,我所遇到的,还算好用的框架,做个分享 1 Bootstrap 官网:http://getboo ...
- Shell编程基础篇
1.1 前言 1.1.1 为什么学Shell Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, Linux/UNIX系统的底层及基础应用软件的核心大都涉及Shell脚 ...
- Android 异步消息处理机制终结篇 :深入理解 Looper、Handler、Message、MessageQueue四者关系
版权声明:本文出自汪磊的博客,转载请务必注明出处. 一.概述 我们知道更新UI操作我们需要在UI线程中操作,如果在子线程中更新UI会发生异常可能导致崩溃,但是在UI线程中进行耗时操作又会导致ANR,这 ...
- 浏览器拦截js打开新窗口
最近做项目时,遇到的问题"想通过javascript在浏览器新标签页或新窗口打开一个新的页面,结果被浏览器大大无情给拦截了"业务需求:前端提交数据到后端,后端返回url,然后在新窗 ...
- 随机生成N个字符(包含数字和字母)
'************************************************************* ' Name: GetRandomString ' Purpose: 随机 ...
- [行业关键词] review code review
意思是 代码评审 或是 代码回顾 代码评审是指在软件开发过程中,通过对源代码进行系统性检查的过程.通常的目的是查找系统缺陷,保证软件总体质量和提高开发者自身水平. Code Review是轻量级 ...