`
还是你更好
  • 浏览: 54120 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

j2me排序

阅读更多
排序算法有很多,如果随便给一个,可能不易服众。要是认真给一个,就能服众了?那也不一定。
这次给的代码是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上没有,但有时必须要用,那就像这样移吧。
1
0
分享到:
评论
2 楼 还是你更好 2009-07-01  
楼上说得是。不过排序应该多少还是有点用处的,移植的想法也有点用处。je高手多多,这博文自然有点逊。
1 楼 jyasa 2009-06-30  
看来兄台也是Javame中人啊,以后多多指教,文章阅了,没太大实用。

相关推荐

    J2ME最经典代码源码

    **J2ME的经典算法函数**可能涵盖多个领域,如数据结构(如栈、队列、链表)、排序算法(如冒泡排序、快速排序)、搜索算法(如线性搜索、二分查找)、图形绘制(如像素操作、图形变换)以及网络通信(如HTTP请求、...

    J2me 基础学习 rpg游戏开发学习

    学习如何使用链表、数组、队列等数据结构,并掌握基本的搜索和排序算法,能帮助优化游戏性能。 6. **游戏逻辑**:了解如何编写游戏规则,如战斗系统、角色成长、物品掉落等。这通常涉及状态机的设计和状态之间的...

    tengge手机端j2me编程教程完整版

    对记录进行排序 ┗━━━━━━━━━━━ ┌第九章 j2me基本类的使用 ┃9_1.Boolean类的使用 ┃9_2.Byte类的使用 ┃9_3.Character类的使用 ┃9_4.Integer类的用法 ┃9_5.String类的用法 ┃9_6.StringBuffer类的用法...

    j2me 动作编辑器 里面有例子

    - **时间轴管理**:可以组织和排序不同的动作序列,方便管理和切换。 - **导出格式**:支持导出为特定格式,如ANU文件,这是J2ME平台常见的动画资源格式。 - **预览功能**:在编辑过程中可以实时预览动作效果,...

    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] &gt; arr[j + 1]) { int...

    J2ME游戏编程

    6. **数据结构和算法**:高效的数据结构(如数组、链表、栈、队列)和算法(如搜索、排序)对于优化游戏性能至关重要。 7. **资源管理**:由于J2ME设备的内存和处理器能力有限,因此合理地加载、解压和复用图像、...

    J2ME开发大全 (中文+英文+源代码) 完整高清晰PDF版(1/3)

    共3个分卷,36M,这是第一个 ...·读、写、排序、查询和存储记录 ·管理数据,并理解数据库的概念 ·展望使用Web服务、信息管理和其他关键功能的移动应用程序 ·使用HTTP连接、网络和Web服务协同工作

    手机通讯录 j2me 源码

    【手机通讯录 j2me 源码】是一款基于Java ME(J2ME)平台开发的应用程序,主要用于在移动设备上管理个人的联系人信息。Java ME是Java的一个子集,专为嵌入式和移动设备设计,如早期的智能手机和平板电脑。这个应用...

    J2ME小游戏 拼图

    此外,解决拼图问题可能涉及到排序算法(如快速排序、归并排序)或者搜索算法(如深度优先搜索、广度优先搜索)。 5. **资源管理**:在移动设备上,内存和CPU资源有限,因此有效的资源管理至关重要。J2ME游戏通常...

    自己写的j2me—rms引擎写的电话本

    在本文中,我们将深入探讨如何使用Java 2 Micro Edition(J2ME)平台中的Record Management System(RMS)引擎来创建一个简单的电话本应用。这个应用涵盖了基础的联系人管理功能,包括添加、查询、显示所有联系人、...

    J2ME中RMS存储工具使用解析

    `RecordFilter` 可用于筛选记录,`RecordComparator` 可用于排序记录。 6. 关闭RecordStore:在完成所有操作后,记得使用 `RecordStore.closeRecordStore()` 关闭RecordStore,释放资源。 总结来说,RMS是J2ME中...

    网络扑克 j2me 程序

    4. **数据结构与算法**:扑克游戏涉及到牌的组合、概率计算等,因此良好的数据结构(如数组、链表、集合)和算法(如排序、搜索)设计至关重要。例如,使用栈来实现牌的发牌过程,使用哈希表存储玩家的牌,使用动态...

    精通J2ME嵌入式软件开发

    3. **EmulationSortFilter.java**:这可能是一个实现排序和过滤功能的类,可能涉及到数据结构和算法的应用,对于处理和展示用户界面中的数据很有用。 4. **SimpleRecordRW.java**:与ComplexRecordRW相似,它可能...

    j2metable.rar_j2me tab_j2me table_j2metable

    5. 事件处理:可能有处理单元格选择、编辑、排序等操作的代码。 6. 示例或测试程序:演示如何集成和使用这个表格组件的代码。 通过研究这个源代码,开发者可以学习到如何在J2ME环境中构建复杂用户界面的技巧,这...

    j2me通讯录

    【J2ME通讯录】是一款基于Java 2 Micro Edition (J2ME) 技术开发的个人手机通讯录应用程序。J2ME是Java平台的一个子集,专为资源有限的移动设备如早期的智能手机和平板电脑设计,它允许开发者创建在这些设备上运行的...

    J2ME考试复习试题

    参数`filter`用于指定过滤条件,`comparator`用于指定排序规则,`keepUpdated`表示是否保持记录列表的更新状态。 以上知识点涵盖了J2ME的基础知识和编程实践,对于学习和掌握J2ME技术具有重要的参考价值。

    j2me中星星图片的各种处理

    在J2ME(Java 2 Micro Edition)平台上,图片处理是一项关键任务,特别是在开发移动游戏或动态图形应用时。本文将深入探讨标题“j2me中星星图片的各种处理”所涉及的知识点,包括图片旋转、数组操作以及线程控制与...

    j2me电话本程序

    - **排序和分组**:可能支持按字母顺序排序,或者根据联系人的类别(如家庭、工作)进行分组。 **5. 其他相关技术** 开发J2ME应用程序时,可能还会用到其他技术,比如CLDC(Connected Limited Device ...

    基于J2ME的Java游戏梦幻炸弹人源程序.rar

    8. **数据结构与算法**:为了优化游戏性能,开发者可能需要使用各种数据结构(如队列、栈)和算法(如搜索、排序)来处理游戏状态和逻辑。 9. **网络功能**:虽然J2ME游戏可能不涉及在线多人对战,但了解如何使用...

    java j2me 经典算法集合

    这个经典算法集合可能还包括其他算法,如排序算法(快速排序、归并排序)、查找算法(二分查找、哈希表查找)和图论算法(深度优先搜索、广度优先搜索)等,这些都是计算机科学和编程的基础知识,对于J2ME开发者来说...

Global site tag (gtag.js) - Google Analytics