>=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国产精品欧美久久久久久影院 | 干干操操 | 在线亚洲小视频 | 欧美黄色网址 | 999久久久免费精品国产牛牛 | 欧美成人一区二区三区不卡 | 亚洲欧美日韩久久一区 | 青青青青青青久久久免费观看 | 99久久精品免费看国产麻豆 | 五月天婷婷亚洲 | 亚洲免费播放 | 羞羞视频免费在线观看 | 亚洲午夜久久久久国产 | 四虎影视永久在线精品免费 | 91色综合久久 | 亚洲国产一区二区三区四区 | 国产欧美日韩中文久久 | 国产欧美亚洲另类第一页 | 国产一区二区三区在线观看免费 | 97久久精品视频 | 亚洲精品麻豆一区二区 | 色综合久久88中文字幕 | 2021中文字幕亚洲精品 | 国产成人亚洲精品老王 | 青青国产成人久久91网站站 | 日韩在线观看中文字幕 | 欧美一级片在线免费观看 | 久久亚洲精品中文字幕第一区 | 日韩精品一区二区三区乱码 | 日本人69视频jizz免费看 | 日本不卡高清免费 | 狠狠狠狠狠狠 | 免费视频久久 | 1024国产欧美日韩精品 |