5-30 字符串的冒泡排序 (20分)
来源:互联网 发布:人工智能美女机器人 编辑:程序博客网 时间:2024/06/05 06:33
5-30 字符串的冒泡排序 (20分)
我们已经知道了将N个整数按从小到大排序的冒泡排序法。本题要求将此方法用于字符串序列,并对任意给定的K(<N),输出扫描完第K遍后的中间结果序列。
输入格式:
输入在第1行中给出N和K(1≤K<N≤100),此后N行,每行包含一个长度不超过10的、仅由小写英文字母组成的非空字符串。
输出格式:
输出冒泡排序法扫描完第K遍后的中间结果序列,每行包含一个字符串。
输入样例:
6 2bestcateastafreeday
输出样例:
bestacatdayeastfree
思路:
按字典序排序指比较两个字符串大小,先按第一个字母来排, 如果第一个字母相同则按第二个字母来排序,依次比较。
java中的compareto方法,返回参与比较的前后两个字符串的asc码的差值,看下面一组代码
String a="a",b="b";
System.out.println(a.compareto.b);
则输出-1;
若a="a",b="a"则输出0;
若a="b",b="a"则输出1;
单个字符这样比较,若字符串比较长呢??
若a="ab",b="b",则输出-1;
若a="abcdef",b="b"则输出-1;
也就是说,如果两个字符串首字母不同,则该方法返回首字母的asc码的差值;
如果首字母相同呢??
若a="ab",b="a",输出1;
若a="abcdef",b="a"输出5;
若a="abcdef",b="abc"输出3;
若a="abcdef",b="ace"输出-1;
即参与比较的两个字符串如果首字符相同,则比较下一个字符,直到有不同的为止,返回该不同的字符的asc码差值,
如果两个字符串不一样长,可以参与比较的字符又完全一样,则返回两个字符串的长度差值
代码:
import java.util.Scanner;public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);int a = sc.nextInt();int b = sc.nextInt();String[] s = new String[a];String s1;for (int i = 0; i < a; i++) {s[i] = sc.next();}for (int i = 0; i < b; i++) {for (int j = 0; j < a - 1; j++) {if (s[j].compareTo(s[j+1])>0) {//compareTo按字典序排序s1 = s[j];s[j] = s[j + 1];s[j + 1] = s1;}}}for (int i = 0; i < a; i++) {System.out.println(s[i]);}}}
0 0
- 5-30 字符串的冒泡排序 (20分)
- PAT-JAVA-5-30 字符串的冒泡排序 (20分)
- 5-30 字符串的冒泡排序 (20分)
- 5-30 字符串的冒泡排序 (20分)
- 5-30 字符串的冒泡排序 (20分)
- 5-30 字符串的冒泡排序 (20分)
- 5-30 字符串的冒泡排序 (20分)
- 字符串的冒泡排序 (20分)
- 5-2 字符串的冒泡排序 (20分)
- 5-1 字符串的冒泡排序 (20分)
- 5-30 字符串的冒泡排序
- 5-30 字符串的冒泡排序
- PTA 5-30 字符串的冒泡排序
- 5-27 冒泡法排序 (20分)
- 5-27 冒泡法排序 (20分)
- 5-27 冒泡法排序 (20分)
- 5-27 冒泡法排序 (20分)
- 5-27 冒泡法排序 (20分)
- 突然发现proteus闪退的一些原因!!!
- C++异常
- 数值作业:Crout克洛特分解法之C语言代码
- 归并排序详解
- LightOj 1198 田忌赛马/贪心
- 5-30 字符串的冒泡排序 (20分)
- 对于JSP几大对象的一点认识
- python中find()的用法
- linux内核添加新的模块
- Java main方法的参数
- hpuoj1339 容斥原理变形
- poj 3253 优先队列
- MyEclipse debug 断点不能调试 ,unable to install breakpoint in ...... 解决办法
- List集合复制的方式