站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2ME 专题J2ME里排序算法探究

J2ME里排序算法探究

摘要: J2ME里排序算法探究
<tr><td>
http:///tech/article1906.html
[转载于CrazyWind的博客]

原文:http://blog.csdn.net/dongfengsun/archive/2006/05/18/744333.aspx

排序算法似乎是个老生常谈的问题,但是如果真让你在纸上写出来的话,恐怕总是错误不断。当然,我也一样。总觉得它似乎很简单,而不愿意去深究它。到用的时候总是错误百出。

那么今天就彻底解决这个问题。

下面是我刚写的一个算法,总的思想就是冒泡。

在循环中让每个元素和剩余的元素做比较,然后让值比较小的冒到最上方。

下面是具体程序:

import java.util.Random;
[]
class ArraySequence
[]{
public static void main(String[] args)
{
int[] arrayL = new int[100000];
Random rd = new Random();
for(int i = 0;i < arrayL.length;i++)
{
arrayL[i] = Math.abs(rd.nextInt());
}
ArraySequence se = new ArraySequence();
long starttime = System.currentTimeMillis();
se.Sequence(arrayL);
long endtime = System.currentTimeMillis();
System.out.println((endtime-starttime));
// StringBuffer sb = new StringBuffer();
// for(int i = 0;i < arrayL.length;i++)
// sb.append(arrayL[i]+"*");
// System.out.println(sb.toString());
// System.out.println(Runtime.getRuntime().totalMemory());
}

public void Sequence(int[] arraylist)
[] {
int len = arraylist.length;
for(int i=0;i < arraylist.length;i++)
{
for(int j=i+1;j < len;j++)
{
if(arraylist[j] < arraylist[i])
{
int temp = 0;
temp = arraylist[j];
arraylist[j] = arraylist[i];
[] arraylist[i] = temp;
}
}
}
}
}





这是个测试的程序,主要的算法在方法Sequence()中,可以直接调用这个方法把数组传递进去即可。

在我的测试过程中,排序10000个元素大概用时500~550ms,也就是0.5S左右。

排序100000个元素大概用时60000左右,也就是1分钟左右。

速度方面还算可以吧。

也暂时想不出来什么更好的优化算法。

这个速度在J2ME游戏里应该是比较快了。

希望大家多讨论,排序算法也是J2ME游戏里用的最多的一个算法。





author:Sun Dongfeng
http:///tech/article1906.html
</td></tr></table></td> </tr> <tr> <td background="/pic/split.gif" height=1></td> </tr> <tr> <td class="tdMargin1">
↑返回目录
前一篇: 手机Icons的大小和文件格式整理
后一篇: Color类和测试内存的类MemoryMonitor