>=2){inttmp=sqrt+k;sqrt>>=1;if(tmp<=value){value-=tmp;sqrt+=k;}}returnsqrt;}//原" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

j2me小練習,教學用

系統 2157 0
j2me小練習,教學用

j2me小練習,教學用

j2me小練習,教學用

有用的J2ME功能函數
    
swap(int a, int b) {
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
} 
/**
* 求平方根
* @param value 定義域
* @return 值域
*/
final public static int sqrt(int value) {
    int sqrt = 0;
    for (int k = 0x100000; k != 0; k >>= 2) {
        int tmp = sqrt + k;
        sqrt >>= 1;
        if (tmp <= value) {
            value -= tmp;
            sqrt += k;
        }
    }
    return sqrt;
} 
//原理:先按行縮放,再按列縮放
//測試結果,在50MS以下

package com.gts.Util;


import javax.microedition.lcdui.*;


public class GImageUtil {

    /**
     * 本次縮放操作的所用時間
     * 以毫秒的形式
     */
    public static long timecost = 0;



    /**
     * 快速縮放一個圖片
     * 得到一個不帶透明色的縮放後的圖片
     * 一般耗時在 50ms 以下
     * @param imgSrc - 原始圖片
     * @param scale100 - 縮放比率,以百分比的形式,比如輸入200,表示放大到原始的200%;輸入75,表示縮小到原始的
     75%
     * @return
     */
    public static final Image fastScale(Image imgSrc, int scale100) {
        int width = imgSrc.getWidth();
        int height = imgSrc.getHeight();

        width *= scale100;
        width /= 100;
        height *= scale100;
        height /= 100;

//              return scale(imgSrc, width, height);
        return fastScale(imgSrc, width, height);
    }



    /**
     * 快速縮放
     * @param imgSrc - 原始圖片
     * @param w_new  - 新寬度
     * @param h_new - 新高度
     * @return - 縮放后的圖片
     */
    public static final Image fastScale(Image src, int dstW, int dstH) {
        long time = System.currentTimeMillis();

        int srcW = src.getWidth();
        int srcH = src.getHeight();

        Image tmp = Image.createImage(dstW, srcH);
        Graphics g = tmp.getGraphics();

        int delta = (srcW << 16) / dstW;
        int pos = delta >> 1;

        for (int x = 0; x < dstW; x++) {
            g.setClip(x, 0, 1, srcH);
            g.drawImage(src, x - (pos >> 16), 0, Graphics.LEFT |
                        Graphics.TOP);
            pos += delta;
        }

        Image dst = Image.createImage(dstW, dstH);
        g = dst.getGraphics();

        delta = (srcH << 16) / dstH;
        pos = delta >> 1;

        for (int y = 0; y < dstH; y++) {
            g.setClip(0, y, dstW, 1);
            g.drawImage(tmp, 0, y - (pos >> 16), Graphics.LEFT |
                        Graphics.TOP);
            pos += delta;
        }

//        return dst;


        tmp = null;
        timecost = System.currentTimeMillis() - time;

        return dst;
    }
} 
    /**輪詢次數計數器*/
    static int sort_counter = 0;

    /**交換次數計數器*/
    static int swap_counter = 0;


    /**
     * 冒泡排序法
     * 從小到大
     * @param data - 原始數據
     * @param smallToBig - true if 從小到大; false if 從大到小
     */
    public static final void bubbleSort(int[] data, boolean smallToBig) {
        int high = data.length;

        int sort_start = sort_counter;
        int swap_start = swap_counter;

        for (int i = 0; i < high; i++) {
            for (int j = i; j < high; j++) {
                ++sort_counter;
                if (smallToBig) {
                    if (data[i] > data[j]) {
                        swapData(data, i, j);
                    }
                } else {
                    if (data[i] < data[j]) {
                        swapData(data, i, j);
                    }
                }

            }
        }

        Util.debug("bubbleSort::Sort_Counter::" + (sort_counter -
                sort_start) + "::swap_counter::" + (swap_counter - swap_start));
    }


    /**
     * Quick sort 來排序一個數組
     * 從小到大
     * @param data - 要排序的數組
     * @param smallToBig - true if 從小到大; false if 從大到小
     */
    public static final void quickSort(int[] data, boolean smallToBig) {
        int low = 0;
        int high = data.length - 1;

        int sort_start = sort_counter;
        int swap_start = swap_counter;

        quickSort(data, low, high, smallToBig);

        Util.debug("quickSort::Sort_Counter::" + (sort_counter -
                                                  sort_start) +
                   "::swap_counter::" + (swap_counter - swap_start));
    }


    /**
     * 快速排序
     * @param data - 原始數組
     * @param low -
     * @param high
     */
    private static final void quickSort(int[] data, int low, int high,
                                        boolean smallToBig) {
        if (low < high) {
            int pivot = partition(data, low, high, smallToBig);
            quickSort(data, low, pivot - 1, smallToBig);
            quickSort(data, pivot + 1, high, smallToBig);
        }
    }


    /**
     * 分割點
     * @param data
     * @param low
     * @param high
     * @return
     */
    private static final int partition(int[] data, int low, int high,
                                       boolean smallToBig) {
        //當前位置為第一個元素所在位置
        int pos = low;
        //采用第一個元素位軸
        int pivot = data[pos];

        for (int i = low + 1; i <= high; i++) {
            ++sort_counter;
            if (smallToBig) {
                //從小到大
                if (data[i] < pivot) {
                    ++pos;
                    swapData(data, pos, i);
                }
            } else {
                //從大到小
                if (data[i] > pivot) {
                    ++pos;
                    swapData(data, pos, i);
                }
            }
        }

        swapData(data, low, pos);

        return pos;
    }



    /**
     * 交換數據
     * @param data - 原始數組
     * @param i
     * @param j
     */
    private static final void swapData(int[] data, int i, int j) {
        int tmp = data[i];
        data[i] = data[j];
        data[j] = tmp;

        ++swap_counter;
    }


    /**
     * Build a 8-byte array from a long.  No check is performed on the
     * array length.
     *
     * @param n The number to convert.
     * @param b The array to fill.
     * @return A byte[].
     */
    public static byte[] toBytes(long n, byte[] b) {
        b[7] = (byte) (n);
        n >>>= 8;
        b[6] = (byte) (n);
        n >>>= 8;
        b[5] = (byte) (n);
        n >>>= 8;
        b[4] = (byte) (n);
        n >>>= 8;
        b[3] = (byte) (n);
        n >>>= 8;
        b[2] = (byte) (n);
        n >>>= 8;
        b[1] = (byte) (n);
        n >>>= 8;
        b[0] = (byte) (n);

        return b;
    }


    /**
     * Build a long from first 8 bytes of the array.
     *
     * @param b The byte[] to convert.
     * @return A long.
     */
    public static long toLong(byte[] b) {
        return ((((long) b[7]) & 0xFF)
                + ((((long) b[6]) & 0xFF) << 8)
                + ((((long) b[5]) & 0xFF) << 16)
                + ((((long) b[4]) & 0xFF) << 24)
                + ((((long) b[3]) & 0xFF) << 32)
                + ((((long) b[2]) & 0xFF) << 40)
                + ((((long) b[1]) & 0xFF) << 48)
                + ((((long) b[0]) & 0xFF) << 56));
    }

  

j2me小練習,教學用


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲成人在线免费 | 免费在线一级片 | 狠狠狠狠狠狠狠狠狠狠 | 亚洲综合精品香蕉久久网97 | 国产午夜免费视频 | 中文字幕不卡 | 国产高清不卡一区二区 | 亚洲国产人成中文幕一级二级 | 日本一级~片免费永久 | 99热久久国产精品免费看 | 欧美一级久久久久久久大 | 国产色吧 | 国产精品亚洲片在线观看麻豆 | 视频在线日韩 | 视色视频| 99久久亚洲国产高清观看 | 欧美在线一级片 | 久久草在线视频播放 | 国产一二三区精品 | 精品国产欧美一区二区三区成人 | 国产一区二区高清 | 99热这里精品 | 国产四虎免费精品视频 | 亚洲久久在线观看 | 四虎永久免费紧急入口 | 精品精品久久宅男的天堂 | 一区二区三区久久 | 久久一区二区三区免费播放 | 九九资源 | 国产精品永久在线 | 免费观看四虎精品国产永久 | 欧美日韩中文字幕在线手机版本 | 亚洲欧美日韩在线观看你懂的 | 插久久 | 青青久在线精品视频 | 韩国亚洲伊人久久综合影院 | 亚洲国产系列久久精品99人人 | 日韩 欧美 亚洲 | 国产精品1| 免费看爱爱视频 | 欧美午夜在线 |