对字符串中字符进行自然顺序排序(基本类型排序)-冒泡算法实现

Posted csyh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对字符串中字符进行自然顺序排序(基本类型排序)-冒泡算法实现相关的知识,希望对你有一定的参考价值。

字符串本质就是字符数组,所以对字符串的排序也就是对字符数组的排序(有选择排序、冒泡排序、快速排序等常用算法);

  • 思路:
    • 字符串转换成字符数组
    • 数组排序
      • 用的冒泡排序,
        • 注意点:
          1. 一层循环下来会将最小的元素转移到末尾,即最小的元素与其他元素都进行了一次比较,所以还需要外层循环控制交换次数(length-1);
          而不是所有的元素大小,所以还需要外层嵌套
          2. 十进制ASCII码,对应的字母位越小,十进制数越大,与自然位相驳;
    • 字符数组转换成字符串

例题加详细的注释:

@Test
public void Sorting(){
    String str = "dkgkfjg";
//1、字符串转换成字符串数组
    char[] ch = str.toCharArray();

//2、对数组进行排序
    //方式一:调用静态方法Arrays.sort()
    //Arrays.sort(ch);

    /*方式二:冒泡排序:
    * */
    //外层循环:控制要交换的轮数,最多要交换length-1次
    for (int j = 0; j < ch.length-1; j++) {
        //创建一个开关,且每次循环开始都打开开关
        boolean loopFlag = true;

        //内层循环:对前后两个数进行比较、交换
        for (int i = 0; i < ch.length - 1 - i; i++) {//-i是已经交换了的元素
            if(ch[i] > ch[i+1]){//这样比较的时其对应的十进制ASCII码,对应的字母位越小,十进制数越大,所以反着来
                char c = ch[i];
                ch[i] = ch[i+1];
                ch[i+1] = c;
                //只要本层循环发生过交换,说明还没有比较完,关闭开关
                loopFlag = false;
            }
            //如全部比较完成,无需等待循环条件满足再跳出外层循环,提高了运行效率
            if(loopFlag){
                break;
            }
        }
    }
//3、将排序后的数组转换成字符串
    String strSort = String.valueOf(ch);
    System.out.println("转换后的数组:"+strSort);
}

以上是关于对字符串中字符进行自然顺序排序(基本类型排序)-冒泡算法实现的主要内容,如果未能解决你的问题,请参考以下文章

golang对数组进行冒泡排序

根据字符串属性按字母顺序对对象数组进行排序

首先按频率对字符串中的字符进行排序,然后按字母顺序排序

go语言从例子开始之Example39.使用函数自定义排序

PHP中支持Unicode的自然排序算法?

手写冒泡排序和选择排序算法