xin's blog

Just have a little faith.
  首页  :: 管理

数组排序的一个类

Posted on 2010-01-29 19:57  greatxin  阅读(233)  评论(0)    收藏  举报

Main.as:

代码
package {
import flash.display.Sprite;

public class Main extends Sprite
{
    
public function Main()
    {
        var arr:Array 
= [1,3,5,2,0,8];
        var result:Array 
= SortController.sortOn(arr, "DESCENDING");
        trace(result);
    }
}
}

 

 排序类:

代码
/**
* by 新
*/
package
{
import mx.flash.UIMovieClip;

public class SortController
{
    
private static const RANDOM:String = "RANDOM";
    
private static const INCREASE:String = "INCREASE";
    
private static const DESCENDING:String = "DESCENDING";
    
public function SortController()
    {
    }
    
public static function sortOn(arr:Array, type:String):Array
    {
        var result:Array 
= [];
        
if (type == SortController.RANDOM)
        {
            result 
= sort_random(arr);
        }
        
else if (type == SortController.INCREASE)
        {
            result 
= sort_increase(arr);
        }
        
else if (type == SortController.DESCENDING)
        {
            result 
= sort_descending(arr);
        }
        
return result;
    }
    
/**
     * 随机排序
     
*/    
    
private static function sort_random(arr:Array):Array
    {
        var result:Array 
= [];
        
while (arr.length > 0)
        {
            var index:
int = Math.round(Math.random() * (arr.length - 1));
            result.push(arr[index]);
            arr.splice(index, 
1);
        }
        
return result;
    }
    
/**
     * 升序排序
     
*/    
    
private static function sort_increase(arr:Array):Array
    {
        var result:Array 
= [];
        
for (var i:int = 0; i < arr.length; i++)
        {
            
for (var j:int = arr.length - 1; j > i; j--)
            {
                
if (arr[i] > arr[j])
                {
                    trace(arr[i], arr[j]);
                    var temp:Number 
= arr[i];
                    arr[i] 
= arr[j];
                    arr[j] 
= temp;
                }
            }
        }
        result 
= arr;
        
return result;
    }
    
/**
     * 倒序排序
     
*/    
    
private static function sort_descending(arr:Array):Array
    {
        var result:Array 
= [];
        var increaseArr:Array 
= sort_increase(arr);
        
for (var i:int = 1; i < increaseArr.length + 1; i++)
        {
            result.push(increaseArr[increaseArr.length 
- i]);
        }
        
return result;
    }

}
}