zoukankan      html  css  js  c++  java
  • php strcmp()字典排序

    字典排序(lexicographical order)是一种对于随机变量形成序列的排序方法。其方法是,按照字母顺序,或者数字小大顺序,由小到大的形成序列。

    比如,字典中a-z,是依次递增的,a,b,c....z,ab,ac....az,bc.....,

    在比如,举个列子。。身边的一本书中。

    第1章

      1.1 字典排序

        1.1.1什么叫字典排序

            1.1.1.1 字典排序的用法

      1.2 用处。。

      1.3 .。。

    第2章

      2.1 .。。

        2.1.1

      2.2.。。

    总是像这样排序的,我理解了字典排序,和这个差不多。。。

    那么strcmp()是如何排序的呢,

    <?php
    //字母 a k
    $str1 = 'a';
    $str2 = 'k';
    $res = strcmp($str1,$str2);
    echo $res;
    echo "<br />";
    //输出-1
    $res = strcmp($str2,$str1);
    echo $res;
    echo "<br />";
    //输出 1
    
    //数字: 1 ,2 ,10, 12
    $arr = array(10,1,2,19999999);
    usort($arr,"strcmp");
    print_r($arr);
    echo "<br />";
    //Array ( [0] => 1 [1] => 10 [2] => 19999999 [3] => 2 )
    
    
    //字符串
    $str_arr = array('1','1.1','1.1.1','1.1.1.1','2','2.1','2.1.1','2.2');
    usort($str_arr,"strcmp");
    print_r($str_arr);
    echo "<br />";
    //Array ( [0] => 1 [1] => 1.1 [2] => 1.1.1 [3] => 1.1.1.1 [4] => 2 [5] => 2.1 [6] => 2.1.1 [7] => 2.2 )
    
    //中文是怎么排序的呢,仔细想想,在新华字典中的排序,是按照拼音的,
    //比如,a ai an ang  ao
    //ba  bai  ban   bang
    
    //那么我们就比较这些值吧,看一下
    $str_cn = array('吧','啊','白','奥','昂','爱','安','般','帮');
    usort($str_cn,"strcmp");
    print_r($str_cn);
    echo "<br />";
    //Array ( [0] => 吧 [1] => 啊 [2] => 奥 [3] => 安 [4] => 帮 [5] => 昂 [6] => 爱 [7] => 白 [8] => 般 )

    //中文 怎么是这样呢,找了好久没找到,一起学过java,那么用java试一下,

    在java的String类中,有个compareTo()方法,也是字典排序,基于字符串中每个字符的Unicode。。

    package example;
    
    public class compareTo {
        public static void main(String[] args) {
            // 比较2个中文
            String str1 = "中国";
            String str2 = "中华";
    
            int res = str1.compareTo(str2);
            System.out.println(res);
            System.out.println("------------");
            // 获取unicode值
            char[] ch1 = str1.toCharArray();
            for (int i = 0; i < ch1.length; i++) {
                System.out.println(ch1[i] + ": " + (int) ch1[i]);
            }
            System.out.println("------------");
            char[] ch2 = str2.toCharArray();
            for (int i = 0; i < ch2.length; i++) {
                System.out.println(ch2[i] + ": " + (int) ch2[i]);
            }
        }
    }

    输出:

    943
    ------------
    中: 20013
    国: 22269
    ------------
    中: 20013
    华: 21326

    //应该就是这样了。。。。

  • 相关阅读:
    Object转bigdecimal
    如何在A用户下建立视图,这个视图是A的表与B的表进行关联的?
    java.util.Date和java.sql.Date的区别和相互转化(转)
    JAVA如何获取GUID
    详解Oracle DELETE和TRUNCATE 的区别(摘)
    分开显示Excel2010打开的文档
    CentOS实验三:使用安装光盘建立本地软件源
    基本C库函数
    Shell_2(验证符合的输入)
    Shell_1(目录之间切换执行脚本)
  • 原文地址:https://www.cnblogs.com/tumio/p/4841415.html
Copyright © 2011-2022 走看看