排序算法有很多,如果随便给一个,可能不易服众。要是认真给一个,就能服众了?那也不一定。
这次给的代码是jdk java.util.Arrays里的代码。在对Vector上依照Collections.sort的代码进行了一些修改,其他完全一致。
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.phoenix.utils;
import java.util.Vector;
/**
*
* @author Looker Cheung
*/
public class Arrays
{//排序采用了sun jdk java.util.Arrays sort的源码
private static final int INSERTIONSORT_THRESHOLD = 7;
public static void sort(Object[] a)
{
Object[] aux = new Object[a.length];
for(int i = 0; i < a.length; i ++)
{
aux[i] = a[i];
}
mergeSort(aux, a, 0, a.length, 0);
}
//归并排序
private static void mergeSort(Object[] src,
Object[] dest,
int low,
int high,
int off)
{
int length = high - low;
// Insertion sort on smallest arrays
if (length < INSERTIONSORT_THRESHOLD) {
for (int i=low; i<high; i++)
for (int j=i; j>low &&
((Comparable) dest[j-1]).compareTo(dest[j])>0; j--)
swap(dest, j, j-1);
return;
}
// Recursively sort halves of dest into src
int destLow = low;
int destHigh = high;
low += off;
high += off;
int mid = (low + high) >>> 1;
mergeSort(dest, src, low, mid, -off);
mergeSort(dest, src, mid, high, -off);
// If list is already sorted, just copy from src to dest. This is an
// optimization that results in faster sorts for nearly ordered lists.
if (((Comparable)src[mid-1]).compareTo(src[mid]) <= 0) {
System.arraycopy(src, low, dest, destLow, length);
return;
}
// Merge sorted halves (now in src) into dest
for(int i = destLow, p = low, q = mid; i < destHigh; i++) {
if (q >= high || p < mid && ((Comparable)src[p]).compareTo(src[q])<=0)
dest[i] = src[p++];
else
dest[i] = src[q++];
}
}
/**
* Swaps x[a] with x[b].
*/
private static void swap(Object[] x, int a, int b)
{
Object t = x[a];
x[a] = x[b];
x[b] = t;
}
public static void sort(Vector list)
{
Object[] a = new Object[list.size()];
list.copyInto(a);
sort(a);
for (int j=0; j<a.length; j++)
{
list.setElementAt(a[j], j);
}
}
}
这里是对j2se移植到j2me的一个例子。我们在j2se上可以发现有很多功能,j2me上没有,但有时必须要用,那就像这样移吧。
分享到:
相关推荐
**J2ME的经典算法函数**可能涵盖多个领域,如数据结构(如栈、队列、链表)、排序算法(如冒泡排序、快速排序)、搜索算法(如线性搜索、二分查找)、图形绘制(如像素操作、图形变换)以及网络通信(如HTTP请求、...
学习如何使用链表、数组、队列等数据结构,并掌握基本的搜索和排序算法,能帮助优化游戏性能。 6. **游戏逻辑**:了解如何编写游戏规则,如战斗系统、角色成长、物品掉落等。这通常涉及状态机的设计和状态之间的...
对记录进行排序 ┗━━━━━━━━━━━ ┌第九章 j2me基本类的使用 ┃9_1.Boolean类的使用 ┃9_2.Byte类的使用 ┃9_3.Character类的使用 ┃9_4.Integer类的用法 ┃9_5.String类的用法 ┃9_6.StringBuffer类的用法...
- **时间轴管理**:可以组织和排序不同的动作序列,方便管理和切换。 - **导出格式**:支持导出为特定格式,如ANU文件,这是J2ME平台常见的动画资源格式。 - **预览功能**:在编辑过程中可以实时预览动作效果,...
9. **排序算法实现**:可以使用简单的冒泡排序,对数组{1, 3, 2, 1}进行排序。 ```java void bubbleSort(int[] arr) { for (int i = 0; i ; i++) { for (int j = 0; j ; j++) { if (arr[j] > arr[j + 1]) { int...
6. **数据结构和算法**:高效的数据结构(如数组、链表、栈、队列)和算法(如搜索、排序)对于优化游戏性能至关重要。 7. **资源管理**:由于J2ME设备的内存和处理器能力有限,因此合理地加载、解压和复用图像、...
共3个分卷,36M,这是第一个 ...·读、写、排序、查询和存储记录 ·管理数据,并理解数据库的概念 ·展望使用Web服务、信息管理和其他关键功能的移动应用程序 ·使用HTTP连接、网络和Web服务协同工作
【手机通讯录 j2me 源码】是一款基于Java ME(J2ME)平台开发的应用程序,主要用于在移动设备上管理个人的联系人信息。Java ME是Java的一个子集,专为嵌入式和移动设备设计,如早期的智能手机和平板电脑。这个应用...
此外,解决拼图问题可能涉及到排序算法(如快速排序、归并排序)或者搜索算法(如深度优先搜索、广度优先搜索)。 5. **资源管理**:在移动设备上,内存和CPU资源有限,因此有效的资源管理至关重要。J2ME游戏通常...
在本文中,我们将深入探讨如何使用Java 2 Micro Edition(J2ME)平台中的Record Management System(RMS)引擎来创建一个简单的电话本应用。这个应用涵盖了基础的联系人管理功能,包括添加、查询、显示所有联系人、...
`RecordFilter` 可用于筛选记录,`RecordComparator` 可用于排序记录。 6. 关闭RecordStore:在完成所有操作后,记得使用 `RecordStore.closeRecordStore()` 关闭RecordStore,释放资源。 总结来说,RMS是J2ME中...
4. **数据结构与算法**:扑克游戏涉及到牌的组合、概率计算等,因此良好的数据结构(如数组、链表、集合)和算法(如排序、搜索)设计至关重要。例如,使用栈来实现牌的发牌过程,使用哈希表存储玩家的牌,使用动态...
3. **EmulationSortFilter.java**:这可能是一个实现排序和过滤功能的类,可能涉及到数据结构和算法的应用,对于处理和展示用户界面中的数据很有用。 4. **SimpleRecordRW.java**:与ComplexRecordRW相似,它可能...
5. 事件处理:可能有处理单元格选择、编辑、排序等操作的代码。 6. 示例或测试程序:演示如何集成和使用这个表格组件的代码。 通过研究这个源代码,开发者可以学习到如何在J2ME环境中构建复杂用户界面的技巧,这...
【J2ME通讯录】是一款基于Java 2 Micro Edition (J2ME) 技术开发的个人手机通讯录应用程序。J2ME是Java平台的一个子集,专为资源有限的移动设备如早期的智能手机和平板电脑设计,它允许开发者创建在这些设备上运行的...
参数`filter`用于指定过滤条件,`comparator`用于指定排序规则,`keepUpdated`表示是否保持记录列表的更新状态。 以上知识点涵盖了J2ME的基础知识和编程实践,对于学习和掌握J2ME技术具有重要的参考价值。
在J2ME(Java 2 Micro Edition)平台上,图片处理是一项关键任务,特别是在开发移动游戏或动态图形应用时。本文将深入探讨标题“j2me中星星图片的各种处理”所涉及的知识点,包括图片旋转、数组操作以及线程控制与...
- **排序和分组**:可能支持按字母顺序排序,或者根据联系人的类别(如家庭、工作)进行分组。 **5. 其他相关技术** 开发J2ME应用程序时,可能还会用到其他技术,比如CLDC(Connected Limited Device ...
8. **数据结构与算法**:为了优化游戏性能,开发者可能需要使用各种数据结构(如队列、栈)和算法(如搜索、排序)来处理游戏状态和逻辑。 9. **网络功能**:虽然J2ME游戏可能不涉及在线多人对战,但了解如何使用...
这个经典算法集合可能还包括其他算法,如排序算法(快速排序、归并排序)、查找算法(二分查找、哈希表查找)和图论算法(深度优先搜索、广度优先搜索)等,这些都是计算机科学和编程的基础知识,对于J2ME开发者来说...