作者:游走的小张 | 来源:互联网 | 2023-10-10 16:28
个人名片:
博主:酒徒ᝰ.
个人简介:沉醉在酒中,借着一股酒劲,去拼搏一个未来。
专栏:PTA习题及解析
介绍:记录了博主在pta学习练题
前言
1.简介
“PTA程序设计类实验辅助教学平台”是由浙江大学主导,杭州百腾教育科技有限公司管理运营,全国高校教师共同建设的程序设计类课程的辅助教学平台。目前,全国538所高校参与,3152位教师共同建设出66095道高质量题目,学生注册用户已达136万;共有14类固定题目集(涵盖C语言、JAVA语言、Python语言、数据结构、数据库系统和中国高校计算机大赛题库等方面)和55类专业课程题目集(涵盖计算机类、电子类、文学类、外语类及华为认证)。包含判断题、填空题、单选题、多选题、程序填空题、函数题、编程题、主观题、多文件编程题和SQL编程题10种题目类型。
2.优点
- 支持20万人同时在线
- 支持多种题型
- 支持多种判题模式
- 为教学质量提供全方位保障
- 即时的答疑系统
一、题目
本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。
输入格式:
输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。
输出格式:
输出为排序后的结果,每个单词后面都额外输出一个空格。
输入样例:
blue
red
yellow
green
purple
#
输出样例:
red blue green yellow purple
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
二、代码
import java.util.ArrayList;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc &#61; new Scanner(System.in);String num;ArrayList<String> list &#61; new ArrayList<>();int n &#61; 0;while (true){num &#61; sc.next();if (!num.equals("#")){list.add(num);}else {break;}n&#43;&#43;;}String[] str &#61; new String[list.size()];for (int i &#61; 0; i < str.length; i&#43;&#43;) {str[i] &#61; list.get(i);}for (int i &#61; 0; i < list.size()-1; i&#43;&#43;) {for (int j &#61; i &#43; 1; j < list.size(); j&#43;&#43;) {if (str[i].length() > str[j].length()){num &#61; str[i];str[i] &#61; str[j];str[j] &#61; num;}}}for (int i &#61; 0; i < str.length; i&#43;&#43;) {System.out.print(str[i] &#43; " ");}}
}
三、笔记
常见的三种排序方法:冒泡排序、插入排序、选择排序 。
- 冒泡排序
比较相邻的元素。如果第一个比第二个大&#xff0c;就交换他们两个。
对每一对相邻元素做同样的工作&#xff0c;从开始第一对到结尾的最后一对。在这一点&#xff0c;最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤&#xff0c;除了最后一个。
持续每次对越来越少的元素重复上面的步骤&#xff0c;直到没有任何一对数字需要比较。 - 插入排序
插入排序是指在待排序的元素中&#xff0c;假设前面n-1(其中n>&#61;2)个数已经是排好顺序的&#xff0c;现将第n个数插到前面已经排好的序列中&#xff0c;然后找到合适自己的位置&#xff0c;使得插入第n个数的这个序列也是排好顺序的。按照此法对所有元素进行插入&#xff0c;直到整个序列排为有序的过程&#xff0c;称为插入排序 - 选择排序
选择排序法的第一层循环从起始元素开始选到倒数第二个元素&#xff0c;主要是在每次进入的第二层循环之前&#xff0c;将外层循环的下标赋值给临时变量&#xff0c;接下来的第二层循环中&#xff0c;如果发现有比这个最小位置处的元素更小的元素&#xff0c;则将那个更小的元素的下标赋给临时变量&#xff0c;最后&#xff0c;在二层循环退出后&#xff0c;如果临时变量改变&#xff0c;则说明&#xff0c;有比当前外层循环位置更小的元素&#xff0c;需要将这两个元素交换