幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2556|回复: 4

[as3]冒个泡

[复制链接]

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
发表于 2009-4-5 23:03:09 | 显示全部楼层 |阅读模式
  1. package  
  2. {
  3.     import flash.display.Sprite;
  4.     import flash.text.TextField;
  5.     import flash.system.Capabilities;
  6.     public class test extends Sprite
  7.     {
  8.         private var board:TextField = new TextField();
  9.         
  10.         public function test()
  11.         {
  12.             board.width = Capabilities.screenResolutionX;
  13.             board.height = Capabilities.screenResolutionY;
  14.             board.multiline = true;
  15.             board.wordWrap = true;
  16.             addChild(board);
  17.             
  18.             var a:Array = createArray(16);
  19.             a[0] = 100;
  20.             show(a);
  21.             sort(a);
  22.             show(a);
  23.             
  24.             var c:int = search(a, 100);
  25.             
  26.             if (c != -1 && c >= 0)
  27.                 show("100的位置在:" + String(c+1));
  28.             else
  29.                 show("数组中没找到100");
  30.             
  31.         }
  32.         
  33.         private function createArray(c:int):Array
  34.         {
  35.             var a:Array = new Array(c);
  36.             for (var i:int = 0; i < c; i++)
  37.             {
  38.                 a[i] = int(Math.random()*1000);
  39.             }
  40.             return a;
  41.         }
  42.         
  43.         
  44.         private function sort(a:Array):void
  45.         {   
  46.             for (var i:int = (a.length - 1); i > 0; i--)
  47.             {
  48.                 for (var j:int = 0; j < i; j++)
  49.                 {
  50.                     if (a[j] > a[j+1])
  51.                     {
  52.                         var t:int = a[j];
  53.                         a[j] = a[j+1];
  54.                         a[j+1] = t;
  55.                     }
  56.                 }
  57.             }
  58.         }
  59.         private function search(a:Array, v:int):int
  60.         {
  61.             var l:int = 0;
  62.             var h:int = a.length - 1;
  63.             var m:int;
  64.             
  65.             while (l <= h)
  66.             {
  67.                 m = (l + h) >>> 1;
  68.                
  69.                 if(a[m] < v)
  70.                     l = m + 1;
  71.                 else if(a[m] > v)
  72.                     h = m - 1;
  73.                 else
  74.                     return m;
  75.             }
  76.             
  77.             return -1;
  78.         }
  79.         
  80.         private function find(a:Array):Object
  81.         {
  82.             var obj:Object;
  83.             return obj;
  84.         }
  85.         
  86.         private function show(o:Object):void
  87.         {
  88.             this.board.appendText(String(o) + "\n");
  89.         }
  90.     }
  91.    
  92. }
复制代码
え~え~お!!!
回复

使用道具 举报

8

主题

215

帖子

2223

积分

⑥精研

积分
2223
发表于 2009-4-6 01:43:07 | 显示全部楼层
果然是冒泡么 =v=
话说容器里都是同一个类型的话,干脆用泛型吧~
在FlashPlayer 10上的ActionScript 3可以用Vector.<int>这样来声明一个类似数组的泛型容器,效率也比一般数组高。
回复 支持 反对

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
 楼主| 发表于 2009-4-6 13:00:21 | 显示全部楼层
Vector就是内存中连续分布的数组吧。不是和Array差不多么?
我看的是flash as programming,里面没说泛型。
但在别人的库里,我看到有用*不确定类型来写的,这个东西可以当泛型用么?
え~え~お!!!
回复 支持 反对

使用道具 举报

8

主题

215

帖子

2223

积分

⑥精研

积分
2223
发表于 2009-4-7 11:52:14 | 显示全部楼层
Array可以用作稀疏数组或者密集数组,为了应对稀疏的用法,Array在AS3里的效率会稍微低一些。而Vector.<T>总是密集的,外加有机会减少类型检查,运行效率能高一些。

你看的资料要够新才行。Vector.<T>是在FlashPlayer 10开始才加入的,老的书上自然是没有。

*跟泛型完全不是一回事。*是“任意类型”,不做任何类型限制,也没有编译时类型检查;泛型参数在编译时是会检查的。ActionScript 3有严格模式和普通模式,前者要求声明类型,所以需要用*;其实用*跟后者不写类型标记达到的效果是一样的……
回复 支持 反对

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
 楼主| 发表于 2009-4-7 13:55:16 | 显示全部楼层
原来是这样,看来还是得去看e文的文档,中文的都比较滞后.
え~え~お!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-4-19 17:02 , Processed in 0.020031 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表