9.19数组以及经典案例

数组:相同类型数据的集合(此解释适于强类型语言)

强类型语言中:1.数组里面只能存放相同数据类型的数据。

      2.定义数组的时候需要制定一个长度(可以存放的元素数量)。

      3.内存空间连续。

集合中:1.可以存放任意类型的数据。

   2.定义时不需要制定长度。

   3.内存空间不连续。

JS中:1.可以存放任意类型数据。

   2.定义时不需要制定长度。

定义数组:var attr = array();      索引:开始为0

     alert(attr[]);

var attr=[1,3.14,"aa"]    使用方括号来定义

alert(attr.length);    length:代表数组长度    push:往数组里面追加元素

数组遍历:经常使用for循环。   控制循环次数

for(car i =0;i<attr.length;i++)

alert(attr[i]);

方式遍历:foreach()(通常用与强类型语言)

  forrach(int a in list)

  {

    a;

  }

弱类型语言用for:  当变量a取不到值时,会自动跳出循环。var a取的是索引

  for(var a in attr)

  {

    alert(attr[a]);

  }

示例:

1. 10个分数,求总分、最高分、最低分

    //总分

var attr=[89,80,76,49,90,25,85,76,59,40]

var sum=0;

for(var i=0;i<attr.length;i++)

{

  sum += attr[i];

}

alert(sum);

    //最高分

var zg =0;

for(var i=o;i<attr.length;i++)

{

  if(attr[i]>zg)

  {

    zg=attr[i];

  }

}

alert(zg);

    //最低:  在有最高值的情况下取最高值

var zd = zg;
for(var i=0;i<attr.length;i++)
{
  if(attr[i]<zd)
  {
    zd = attr[i];
  }
}
alert(zd);

2.添加去重:

var attr =[2,5,10,16,27];

var sj=27;

var cf=true;

for(var i=0;i<attr.length;i++)

{

  if(sj == attr[i])

  {

    cf = false;

    break;

  }

}

if(cf)

{

  attr.push(sj);

  alert(attr.length);

}

else

{

  alert("有重复值");

}

3.对数组元素排序(♥  冒泡排序):

var attr = [1,8,26,4,15,3,7,42,9];

冒泡排序样式:

8 6 4 5 3 7 2 9 1   8
8 6 5 4 7 3 9 2 1     7
8 6 5 7 4 9 3 2 1   6
8 6 7 5 9 4 3 2 1   5
8 7 6 9 5 4 3 2 1   4
8 7 9 6 5 4 3 2 1   3
8 9 7 6 5 4 3 2 1   2
9 8 7 6 5 4 3 2 1   1

两个相邻的元素进行比较,满足条件元素互换
进行比较的轮数是数组的长度减一

定义一个交换使用的中间变量
var zj = 0;

for(var i=0;i<attr.length-1;i++)

{

  for(var j=0;j<attr.length-1-i;j++)

  {

    if(attr[j]<attr[j+1])

    {

      zj=attr[j];

      attr[j]=attr[j+1];

      attr[j+1]=zj;

    }

  }

}

alert(attr[0]);

这一种便捷排序代码在JS中不准确,不要用:

var attr = [1,8,26,4,15,3,7,42,9];

attr.sort();

alert(attr[3]);

在数组里面查找数据:(循环遍历方式)(二分法)

循环遍历方式:

var sy = -1;
for(var i=0;i<attr.length;i++)
{
  if(attr[i]==v)
  {
    sy = i;
  }
}

if(sy == -1)
{
  alert("没找到数据");
}
else
{
  alert("该数据在数组里面的索引为:"+sy);
}

♥  二分法:

var minsy = 0;          (最小索引)
var maxsy = attr.length-1;
var midsy ;

while(true)                       (因为循环次数不同,so用while)

{

  midsy = parseInt((minsy+maxsy)/2);    (若类型语言中避免小数要用parseint转换)

  if(attr[midsy] == v)          (比较中间值和用户的值判断中间索引的值是否等于用户要查找的值)

  {

    break;               (如果等于,就退出循环,找到了值)

  }

  if(midsy == minsy)           (判断是否只剩下两个数据)

  {

    if(attr[midsy+1]==v)        (判断两个数据中的另外一个是否等于用户查找的值)

    {   

      midsy = midsy+1;       (找到了值,退出循环)
      break;

    }

    else

    {

      midsy = -1;           (没找到值,退出循环)

      break;

    }

  }

  if(attr[midsy]>v)            (用来改范围)

  {
    maxsy = midsy;
  }
  else
  {
    minsy = midsy;
  }

}

alert(midsy);

时间: 2024-11-08 09:26:44

9.19数组以及经典案例的相关文章

hdu 1541/poj 2352:Stars(树状数组,经典题)

Stars Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4052    Accepted Submission(s): 1592 Problem Description Astronomers often examine star maps where stars are represented by points on a plan

javascript的理解及经典案例

js的简介: JavaScript是一种能让你的网页更加生动活泼的程式语言,也是目前网页中设计中最容易学又最方便的语言. 你可以利用JavaScript轻易的做出亲切的欢迎讯息.漂亮的数字钟.有广告效果的跑马灯及简易的选举,还可以显示浏览器停留的时间.让这些特殊效果提高网页的可观性. javascript现在可以再网页上做很多很多事情,网页特效,操作dom,html5游戏(基于html5和JavaScript的结合),动画等等特效,还可以实现拉去后台数据(通过ajax),不仅可以做前台还可以做后

大数据高冷?10个有趣的大数据经典案例

马云说:互联网还没搞清楚的时候,移动互联就来了,移动互联还没搞清楚的时候,大数据就来了.近两年,“大数据”这个词越来越为大众所熟悉,“大数据”一直 是以高冷的形象出现在大众面前,面对大数据,相信许多人都一头雾水.下面我们通过十个经典案例,让大家实打实触摸一把“大数据”.你会发现它其实就在身边 而且也是很有趣的. 啤酒与尿布 全 球零售业巨头沃尔玛在对消费者购物行为分析时发现,男性顾客在购买婴儿尿片时,常常会顺便搭配几瓶啤酒来犒劳自己,于是尝试推出了将啤酒和尿布摆在一起的 促销手段.没想到这个举措

Spark之权威指南经典案例

hadoop权威指南上有一个求历史最高温度的经典案例,源数据如下: -- sample.txt0067011990999991950051507004+68750+023550FM-12+038299999V0203301N00671220001CN9999999N9+00001+999999999990043011990999991950051512004+68750+023550FM-12+038299999V0203201N00671220001CN9999999N9+00221+9999

多线程十大经典案例之一 双线程读写队列数据

本文配套程序下载地址为:http://download.csdn.net/detail/morewindows/5136035 转载请标明出处,原文地址:http://blog.csdn.net/morewindows/article/details/8646902 欢迎关注微博:http://weibo.com/MoreWindows 在<秒杀多线程系列>的前十五篇中介绍多线程的相关概念,多线程同步互斥问题<秒杀多线程第四篇一个经典的多线程同步问题>及解决多线程同步互斥的常用方法

java多线程经典案例

/** * 典型案例:子线程执行10次,主线程执行100次,两者交替50次. */ package cn.itcast.lesson4; public class TestWaitNotify { public static void main(String[] args){ final Business business= new Business(); new Thread( new Runnable() { public void run() { for(int i=1;i<=50;i++

秒杀多线程第十六篇 多线程十大经典案例之一 双线程读写队列数据

版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 本文配套程序下载地址为:http://download.csdn.net/detail/morewindows/5136035 转载请标明出处,原文地址:http://blog.csdn.net/morewindows/article/details/8646902 欢迎关注微博:http://weibo.com/MoreWindows 在<秒杀多线程系列>的前十五篇中介绍多线程的相关概念,多线程同步互斥问题<秒杀多

网络机器人的识别与攻防的经典案例

本文我们介绍一个网络机器人的识别与攻防的经典案例.使用到的代码见本人的superword项目: https://github.com/ysc/superword/blob/master/src/main/java/org/apdplat/superword/tools/ProxyIp.java 我们的目的是要使用机器人自动获取站点http://ip.qiaodm.com/ 和站点http://proxy.goubanjia.com/ 的免费高速HTTP代理IP和端口号. 不过他们未对机器人进行识

拍卖行与邮件系统——设计者与开发者协作的经典案例

此文仅代表作者本人观点,如有槽点,欢迎吐槽. 设计者与开发者 设计者与开发者,游戏行业内直白的说法就是策划.美术跟程序.但不管在任何行业,这两者之间的关系都既像战友又像敌人.设计者的想法往往是完美的,而开发者的想法却是实际的,就好像梦想与现实一样.我听说过这样的话:美术设计的效果是100%的话,程序呈现出的效果能达到80%就已经很完美了.这当然不是在黑程序,程序出于某些原因无法完全实现效果(资源尺寸,资源通用性,性能考虑等等),毕竟梦想和现实是有差距的.在此案例中,我们仅讨论策划与程序. 拍卖行