使用 ascii 碼對 String 類型進行二分查找

/**
     * 字符串進行排序
     * @param list
     * @param start
     * @param end
     * @param targen
     * @return
     */
    public static int seek(List<Map<String, Object>> list,int start,int end,String targen) {
        int index = (start + end) / 2;
        // 判斷須要 查找的值 在不在數組裏面
        if(toAscii(targen)>toAscii(list.get(end).get("key").toString())
            ||toAscii(targen)<toAscii(list.get(start).get("key").toString())
            ||start>end) {
            return -1; //不在返回 -1 ;
        }
        
        if(toAscii(targen)>toAscii(list.get(index).get("key").toString())) {
            return seek(list,index + 1,end,targen);
        }else if(toAscii(targen)<toAscii(list.get(index).get("key").toString())){
            return seek(list,start,index-1,targen);
        }else {
            return index;
        }
        
    }數組

/**
     * 將字符串轉化成  ascii 碼
     * @param targen 須要轉化的字符串
     * @return
     */
    public static int  toAscii(String targen) {
        char[] chars = targen.toCharArray();
        String asiic = "";
        for(char as : chars) {
            asiic += (byte)as +"";
        }
        return Integer.parseInt(asiic);
    }.net

//調用示例排序

public static void main(String[] args) {
        
        int a = (int)'a';
        System.out.println(a);
        
        List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
        Map<String, Object> map1 = new HashMap<String,Object>();
        map1.put("key", "abc");
        list.add(map1);
        
        Map<String, Object> map2 = new HashMap<String,Object>();
        map2.put("key", "abd");
        list.add(map2);
        
        Map<String, Object> map3 = new HashMap<String,Object>();
        map3.put("key", "abf");
        list.add(map3);
        
        Map<String, Object> map4 = new HashMap<String,Object>();
        map4.put("key", "abh");
        list.add(map4);
        
        Map<String, Object> map5 = new HashMap<String,Object>();
        map5.put("key", "abg");
        list.add(map5);
        
        System.out.println(seek(list,0,list.size()-1,"abf"));
        System.out.println(list.get(seek(list,0,list.size()-1,"abf")).get("key").toString());
        
    }    ci

相關文章
相關標籤/搜索