`
还是你更好
  • 浏览: 53040 次
  • 性别: 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中人啊,以后多多指教,文章阅了,没太大实用。

相关推荐

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

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

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

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

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

    用自己写的j2me rms引擎写的电话本 功能是: 1.添加 2.查询 3.列出所有的资料 1.修改 2.删除 3.排序

    手机通讯录 j2me 源码

    可以新建联系人,删除联系人,通过联系人姓名实现快速查询,联系人列表以联系人的姓名排序。j2me源码

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

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

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

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

    如何使用RecordStore Enumeration 排序

    经我细心探究,终于把J2ME中的Enumeration排序问题给解决了

    j2me中星星图片的各种处理

    刚开始是图片的旋转,如上传资源的箭头图标旋转一样。后来是一个数组,从中随机抽取n个不同的数重新组成数组,排序。旋转的图片坐标为随机的新数组中取出来的数

    排序的算法

    关于排序的算法!!!!

    BlackBerry 应用和MIDlet之间的交互

    这个包包含接口来列举,排序和筛选 RMS 内容。 在MIDP1.0 时候,每个RMS 存储只属于创建它的MIDlet 套件。MIDP2.0 规范给RMS 包增加了一 个非常有用的能力:它允许一个MIDlet 套件和另一个MIDlet 套件共享记录存储。

    JAVA上百实例源码以及开源项目

     这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失。使用时候只需在控制台窗口执行jar就可以了。 Java 3DMenu 界面源码 5个目标文件 ...

    JAVA上百实例源码以及开源项目源代码

     这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失。使用时候只需在控制台窗口执行jar就可以了。 Java 3DMenu 界面源码 5个目标文件 ...

    手机理财JAccount V2.0.8最新版

    j2me版本 更正了编辑页面下,几乎同时按下取消和确定键时,会造成死机的问题。多谢中国移动变态的测试者们。 实现了按下alt键后,滚轮上下滚动转换为左右滚动的功能。 更正九宫格菜单会同时选中两个的问题。 欢迎...

    java面试题

    Collections是针对集合类的帮助类,它提供了一系列针对集合的搜索,排序,线程安全化等操作。 final、finally、finalize的区别? 答:final用于声明属性方法和类,分别表示:属性不可变,方法不可覆盖,类不可继承...

    JAVA面试题最全集

    5.j2me程序的必需的几个部分 6.c/s与b/s的区别 7.构建一个connect pool,然后再调用它, 8.j2ee平台与dotnet平台的区别 9.ejb的life cycle 10.session bean 和 entity bean的区别 11.ejb中的transaction机制 ...

Global site tag (gtag.js) - Google Analytics