zoukankan      html  css  js  c++  java
  • 对字符串中字符进行自然顺序排序(基本类型排序)-冒泡算法实现

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

    • 思路:
      • 字符串转换成字符数组
      • 数组排序
        • 用的冒泡排序,
          • 注意点:
            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);
    }
    
  • 相关阅读:
    函数指针
    系统学习爬虫_2_urllib
    系统学习爬虫_1_爬虫基本原理讲解
    机器学习_集成算法与随机森林_案例实战:泰坦尼克获救预测
    机器学习_决策树及实战
    数据库_8_SQL基本操作——数据操作
    数据库_7_SQL基本操作——表操作
    数据库_6_SQL基本操作——库操作
    数据库_5_MySQL数据库介绍
    数据库_4_SQL介绍
  • 原文地址:https://www.cnblogs.com/csyh/p/12273757.html
Copyright © 2011-2022 走看看