[转载] 【Java】将一个字符串的字符排序,按ASCII表的顺序从小到大

参考链接: 在Java中搜索字符串中的字符和子字符串

将一个字符串的字符按ASCII表的顺序从小到大排序,如将字符串“asdafxcvMADb”排序为“ADMaabcdfsvx”

 

 

算法的基本思想: 先将字符串转化为一个char类型的数组,来进行存储(因Java中的字符串并不像C++中那样直接使用数组存储)。 之后按照归并排序的方法,将char数组中的内容按从小到大排序。归并排序是一种稳定的排序算法,而且可以将算法的时间复杂度提高到O(nlgn)。 

废话不多说,直接上代码: 

public class Demo {

    public static void main(String[] args){

        Demo demo=new Demo();

        String string="asdafxcvMADb";

        demo.sortByASCII(string);

    }

 

    public void sortByASCII(String str){

        char []array=str.toCharArray();   //将一个简单的字符串中的内容转化为char数组

        sort(array);

        for(char s:array)          //输出

            System.out.print(s);

    }

 

    public static void sort(char []arr){

        char []temp = new char[arr.length];    //在排序前,先建好一个长度等于原数组长度的临时数组,避免递归中频繁开辟空间

        sort(arr,0,arr.length-1,temp);

    }

    private static void sort(char[] arr,int left,int right,char []temp){

        if(left<right){

            int mid = (left+right)/2;

            //递归的方法

            sort(arr,left,mid,temp);        //左边归并排序,使得左子序列有序

            sort(arr,mid+1,right,temp);//右边归并排序,使得右子序列有序

            merge(arr,left,mid,right,temp);//将两个有序子数组合并操作

        }

    }

    private static void merge(char[] arr,int left,int mid,int right,char[] temp){

        int i = left;          //左序列指针

        int j = mid+1;        //右序列指针

        int t = 0;           //临时数组指针

        while (i<=mid && j<=right){

            if(arr[i]<=arr[j])

                temp[t++] = arr[i++];

            else

                temp[t++] = arr[j++];

        }

        while(i<=mid){               //将左边剩余元素填充进temp中

            temp[t++] = arr[i++];

        }

        while(j<=right){            //将右序列剩余元素填充进temp中

            temp[t++] = arr[j++];

        }

        t = 0;

        //将temp中的元素全部拷贝到原数组中

        while(left <= right){

            arr[left++] = temp[t++];

        }

    }

}

 

 

鉴于代码中的注释也比较清楚,这里也不多说。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/540207.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如果只做前端验证的话,谈jjdd.com的看照片功能。

如果你在上海&#xff0c;并且坐过地铁的话&#xff0c;你肯定知道jjdd.com。 这个网站和百合&#xff0c;世纪佳缘类似&#xff0c;都是交朋友的性质。 在jjdd.com中有个很重要的功能&#xff1a;如果你上传的照片比你想看的人少的话&#xff0c;你是不能看她的照片的。 例如如…

[转载] 快速学习-Mybatis框架概述

参考链接&#xff1a; Java在竞争性编程中的快速I/O 第1章 框架概述 1.1 什么是框架 1.1.1 什么是框架 框架&#xff08;Framework&#xff09;是整个或部分系统的可重用设计&#xff0c;表现为一组抽象构件及构件实例间交互的方法;另一种定义认为&#xff0c;框架是可被…

3、MySQL的数据类型介绍

上一章节内容主要介绍了一些MySQL中对表和库的增删改查操作&#xff0c;对于上一章中对与表中字段的一些定义进行说明&#xff0c;本章主要介绍关于数据库类型的一些定义。一、概述&#xff1a;MySQL数据库中的数据大致可以分为以下几类&#xff0c;从而实现数据库在操作的时候…

[转载] 必须要会回答的Java面试题(字符串篇)

参考链接&#xff1a; 比较Java中的两个字符串String 最近很多学习java的小白问我字串相关的问题&#xff0c;觉得很有必要整理下&#xff0c;以方便初学者理解字符串以及应对今后面试中考官的提问。 如果你是有几年Java开发经验&#xff0c;可以根据目录选择性的阅读以下内…

[转载] java如何实现一个字符串的反转和替换

参考链接&#xff1a; 反转Java中的字符串String 一、java字符串的反转 1.利用java字符串的拼接实现字符串的反转&#xff0c;代码如下&#xff1a; public static String reverse(String s){ int lens.length(); String str""; for (int i 0; i < len; i) { …

java 中的instanceof

java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出&#xff0c;这个对象是否是这个特定类或者是它的子类的一个实例。 用法&#xff1a;result object instanceof class参数&#xff1a;Result&#xff1a;布尔类…

[转载] 将一个整数型字符串转换为一个整数

参考链接&#xff1a; Java中整数到字符串转换的不同方法 package com.utl.string; /* * 将一组整数字符串转换为整数 * 例&#xff1a;"234"转换为整数型234 * 分析&#xff1a;涉及到许多问题&#xff0c;例如非法输入&#xff0c;有正负号&#xff0c;是否为空字…

升级PowerShell至4.0版本

为了更好的使用Cmder v1.2&#xff0c;不得不升级PowerShell为4.0。 不知道Cmder的&#xff0c;可以点击这里&#xff1a;https://github.com/cmderdev/cmder 和 逆天神器 cmder。 Powershell是运行在Windows机器上实现系统和应用程序管理自动化的命令行脚本环境。 需要.NET环境…

[转载] 字符串太长 pep8_Python f字符串– PEP 498 –文字字符串插值

参考链接&#xff1a; 从Java中的字符串中删除前导零 字符串太长 pep8 Python f-strings or formatted strings are the new way to format strings. This feature was introduced in Python 3.6 under PEP-498. It’s also called literal string interpolation. Python f字符…

备忘(持续更新。。。)

1、在springmvc这个框架里面&#xff0c;创建新的业务逻辑层&#xff0c;dao、service层至少需要一个接口&#xff0c;项目才能跑起来 2、获取当前用户桌面路径 File desktopDir FileSystemView.getFileSystemView() .getHomeDirectory();String desktopPath desktopDir.getA…

[转载] 字符串操作截取后面的字符串_对字符串的5个必知的熊猫操作

参考链接&#xff1a; 修剪Java中的字符串(删除前导和尾随空格) 字符串操作截取后面的字符串 We have to represent every bit of data in numerical values to be processed and analyzed by machine learning and deep learning models. However, strings do not usually co…

更改域控制器的计算机名

林功能级别必须为Windows Server 2003及以上 1. netdom computername Server08-1.contoso.com /add:08Server1.contoso.com 2. netdom computername Server08-1.contoso.com /makeprimary:08Server1.contoso.com 3. Restart your computer 4. netdom computername 08Server1.co…

[转载] Google Java代码规范

参考链接&#xff1a; 使用Java计算文本文件txt中的行数/单词数/字符数和段落数 原文地址&#xff1a;https://google.github.io/styleguide/javaguide.html GIthub上GoogleCode风格的配置文件&#xff08;支持Eclipse IDE和IntelliJ IDE&#xff09;&#xff1a;https://git…

SQL PASS西雅图之行——签证篇

本人有幸通过IT168&itpub的站庆活动http://www.itpub.net/thread-1716961-1-1.html&#xff0c;并应微软邀请参加了在西雅图举办的The Conference for SQL Server Professionals&#xff08;简称SQL-PASS&#xff09;。 SQL-PASS会议计划于2012年11月6日-9日举行&#xff0…

[转载] java8 lambda表达式 List转为Map

参考链接&#xff1a; 使用Lambda表达式检查字符串在Java中是否仅包含字母 public static void main(String[] args) { List<User> userList new ArrayList<User>(); User user0 new User("han1", "男1", 20); User user1 new User("…

11.python并发入门(part5 event对象)

一、引入event。 每个线程&#xff0c;都是一个独立运行的个体&#xff0c;并且每个线程的运行状态是无法预测的。 如果一个程序中有很多个线程&#xff0c;程序的其他线程需要判断某个线程的运行状态&#xff0c;来确定自己下一步要执行哪些操作。 threading模块中的event对象…

[转载] Java 将字符串首字母转为大写 - 利用ASCII码偏移

参考链接&#xff1a; 使用ASCII值检查Java中的字符串是否仅包含字母 将字符串name 转化为首字母大写。普遍的做法是用subString()取第一个字母转成大写再与之后的拼接&#xff1a; str str.substring(0, 1).toUpperCase() str.substring(1); 看到一种效率更高的做法&…

俞永福卸任阿里大文娱董事长,改任 eWTP 投资组长

两天前&#xff08;11月13日&#xff09;&#xff0c;阿里文娱董事长俞永福离职的消息&#xff0c;在互联网圈炸了锅。但很快&#xff0c;俞本人就在微博做了澄清&#xff0c;并称“永远幸福&#xff0c;我不会离开”。然而就在今天&#xff08;11月15日&#xff09;&#xff0…

[转载] java提取字符串中的字母数字

参考链接&#xff1a; 使用Regex检查字符串在Java中是否仅包含字母 String str "adsf adS DFASFSADF阿德斯防守对方asdfsadf37《&#xff1f;&#xff1a;&#xff1f;%#&#xffe5;%#&#xffe5;%#$%#$%^><?1234"; str str.replaceAll("[^a-zA-…

snort的详细配置

前一段一直在做snort入侵检测系统的安装以及配置&#xff0c;看了很多的网上资料&#xff0c;也算是总结了下前辈的经验吧。需要的软件包&#xff1a;1、httpd-2.2.6.tar.gz2、mysql-5.1.22-rc-linux-i686-icc-glibc23.tar.gz3、php-5.2.4.tar.bz24、acid-0.9.6b23.tar.gz5、ad…