import java.util.Scanner;
/**
* 任务二:实现最小值排头功能关键算法并绘制流程图(30 分) 输入 20 个不同的整数,找出其中最小的数,将它与第 1 个输入的数交换位置之后输出 这些数。
* 要求:用数组解决任务,在输入整数时各整数之间用空隔分隔。
*
* @author key
*
*/
public class week02 {
/**
* 传入一个无序的整形数组,找出其中最小的数,将它与第 1 个输入的数交换位置
*
* @param intArrays
* 整形数组
* @return 整形数组
*/
public static int[] SecNum(int[] intArrays) {
int[] intArr = intArrays;
int intMin = intArr[0];// 保存第一个的元素的值
int x = 0;// 保存最小的元素下标
// 循环对比数组中的值 ,升序排列
for (int i = 0; i < intArr.length; i++) {
// 将第i个值与之前的值对比,如果比第i个值小,则保存元素下标,否则跳出循环.
for (int j = i; j > 0; j--) {
// 判断如果第j-1个数大于第j个数,则保存元素下标,与小于i下标的所有数都进行判断
if (intArr[j - 1] > intArr[j]) {
x = j;
} else {
x = j - 1;
}
}
}
// 找出其中最小的数,将它与第 1 个输入的数交换位置之后输出 这些数
intArr[0] = intArr[x];
intArr[x] = intMin;
return intArr;
}
/**
* 传入字符串数组,返回数字数组
*
* @param str
* 字符串String类型数组
* @return int整形数组
*/
public static int[] ParseInt(String[] str) {
int[] intCount = new int[str.length];
for (int i = 0; i < str.length; i++) {
if (!str[i].matches("[0-9]{1,}")) {
System.out.println("输入的数中有非数字");
return null;
}
intCount[i] = Integer.valueOf(str[i]);
}
return intCount;
}
/**
* 主方法
* @param args
*/
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 输入20个不同的整数
System.out.println("输入20个不同的整数,在输入整数时各整数之间用空隔分隔:");
String strCount = in.nextLine();
String[] strMath = strCount.split("\\s+");// 使用正则表达式判断空格符号进行分割
if (ParseInt(strMath) == null) {
return;
}
int[] intCount = ParseInt(strMath);
// 获取结果
intCount = SecNum(intCount);
//打印结果,前20个整数
for (int i = 0; i < intCount.length; i++) {
System.out.print(intCount[i] + " ");
if (i >= 20) {
break;
}
}
}
}
j1_10_02.实现最小值排头功能关键算法.输入 20 个不同的整数,找出其中最小的数,将它与第 1 个输入的数交换位置之后输出 这些数。将字符串数组转换为数字数组
最新推荐文章于 2024-05-10 16:46:34 发布