排序算法似乎是个老生常谈的问题,但是如果真让你在纸上写出来的话,恐怕总是错误不断。当然,我也一样。总觉得它似乎很简单,而不愿意去深究它。到用的时候总是错误百出。
那么今天就彻底解决这个问题。
下面是我刚写的一个算法,总的思想就是冒泡。
在循环中让每个元素和剩余的元素做比较,然后让值比较小的冒到最上方。
下面是具体程序:
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
分享到:
相关推荐
本文将深入探讨"j2me五子棋搜索算法"这一主题,它涉及到如何让计算机在五子棋游戏中展现出智能,与玩家进行对弈。五子棋是一种两人对战的策略游戏,目标是先连成五子直线(横、竖或斜)的一方获胜。在这个背景下,...
### J2ME中平方根算法 #### 背景介绍 Java 2 Micro Edition(简称J2ME)是Sun Microsystems为嵌入式设备和移动终端提供的Java平台版本。它主要针对资源有限的设备,如手机、PDA和个人数字助理等。J2ME包括两个关键...
在J2ME(Java Micro Edition)环境下,A*算法通常被用于游戏开发,特别是那些需要角色或物体在地图上寻找最短路径的情况。J2ME是一个轻量级的Java平台,适用于移动设备和嵌入式系统,因此在资源有限的环境中实现高效...
Java 2 Micro Edition (J2ME) 是一种用于开发小型设备和嵌入式系统的 Java 平台,如手机、智能手表或家用电器等。在 J2ME 应用程序中,有时我们需要处理文件的压缩和解压缩,以节省存储空间或在网络上传输数据时减少...
在本文中,我们将深入探讨基于Java 2 Micro Edition(J2ME)的透明泡泡碰撞算法。J2ME是一种轻量级的Java平台,主要用于移动设备和嵌入式系统的开发。这个"j2me透明泡泡碰撞算法小演示"项目提供了一个简单的实例,...
这个经典算法集合可能还包括其他算法,如排序算法(快速排序、归并排序)、查找算法(二分查找、哈希表查找)和图论算法(深度优先搜索、广度优先搜索)等,这些都是计算机科学和编程的基础知识,对于J2ME开发者来说...
J2ME虽然资源有限,但仍然可以通过使用插值算法来实现高质量的图像缩放。插值算法是一种用于提高图像分辨率的方法,它通过在原始像素之间插入新的像素值来实现平滑的放大效果,避免像素化的现象。本文将深入探讨J2ME...
《J2ME卡马克算法源码详解与学习指南》 在移动设备和嵌入式系统的开发中,Java 2 Micro Edition(J2ME)曾是主流平台之一,尤其在早期智能手机和平板电脑中广泛应用。卡马克算法,由著名游戏开发者约翰·卡马克提出...
在这个J2ME(Java Micro Edition)版本中,该算法被优化以适应移动设备的性能限制。 A*算法的核心思想是结合了Dijkstra算法的最短路径特性以及优先级队列(通常用二叉堆实现)的高效性,同时引入了启发式函数来估计...
由于J2ME资源有限,AI可能会采用简化版的算法,以减少计算复杂度。 5. **胜负判断**:当某一方连成五子时,游戏结束。这部分代码会检查当前棋盘布局,找出所有可能的连线,判断是否存在五子连珠的情况。 6. **用户...
本文主要讨论如何使用插值算法在J2ME环境中实现图片的放大和缩小。首先,我们需要理解图像缩放的基本原理。 1. 图像缩放的基本思想: 图像放大或缩小涉及到图像坐标系统的变换。在放大图像时,新的目标图像坐标可能...
在J2ME(Java 2 Micro Edition)平台上实现A*寻路算法,主要是因为J2ME是Java的一个轻量级版本,适用于移动设备和嵌入式系统。虽然资源有限,但J2ME平台依然能够处理复杂的算法,如A*,以支持游戏和其他需要路径规划...
J2ME(Java Micro Edition)是Java平台的一个版本,主要用于移动设备和嵌入式系统,因此将A*算法应用于J2ME可以帮助创建智能导航或策略游戏等应用。 A*算法的核心在于它使用了一个评估函数来衡量从起点到目标点的...
3. **开放列表(Open List)**:A*算法使用优先队列来存储待处理的节点,根据F值排序,优先处理F值小的节点。 4. **闭合列表(Closed List)**:记录已经探索过的节点,避免重复访问。 5. **扩展节点**:每次从开放...
根据提供的文件信息,我们可以深入探讨A*算法在J2ME平台上的实现方法和技术要点。首先,需要明确的是,A*算法是一种广泛应用于路径查找和图遍历中的算法,它能够找到从起点到终点的最短路径。而在本例中,我们关注的...
**J2ME DES算法详解** DES(Data Encryption Standard)算法是一种经典的对称加密技术,它在信息安全领域有着广泛的应用。J2ME(Java Micro Edition)是Java平台的一个子集,主要用于移动设备和嵌入式系统。在J2ME...
**J2ME的经典算法函数**可能涵盖多个领域,如数据结构(如栈、队列、链表)、排序算法(如冒泡排序、快速排序)、搜索算法(如线性搜索、二分查找)、图形绘制(如像素操作、图形变换)以及网络通信(如HTTP请求、...
J2ME,全称Java 2 Micro Edition,是Java平台的一个子集,主要用于嵌入式设备和移动设备的开发,如手机、智能电表、家庭自动化设备等。它提供了跨平台的开发环境,使得开发者可以编写一次代码,到处运行。J2ME由两大...
碰撞检测则需要算法支持,比如简单的矩形碰撞检测,或者更复杂的像素级检测。得分计算则与游戏规则相关,如击落敌机、躲避障碍物等。 网络功能在J2ME中也很常见,虽然这个例子中的飞机游戏没有明确提及网络特性,但...
本篇将深入探讨J2ME中的SQRT(开平方根)算法及其演示程序。 首先,开平方根是一种数学运算,它返回一个非负数的平方根。在计算机科学中,尤其是游戏开发或图形处理中,这个运算非常常见,例如计算距离、角度和速度...