问题描述 给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200输入格式 第一行为一个整数n。
第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。输出格式 输出一行,按从小到大的顺序输出排序后的数列。
样例输入5
8 3 6 4 9
样例输出
3 4 6 8 9
这题使用冒泡排序(因为是基础练习,代码加上了非常完整的注释)
此为C#版本代码
class Program
{
static void Main(string[] args)
{
//获得的值
int num = int.Parse(Console.ReadLine());
//循环获取数列的数字
string[] strs = Console.ReadLine().Split(' ');
//这里Select拉姆达表达式,不会可以百度,必学
//这里Task获取一下前几个数字,限制一下,不加也可以哈哈
int[] nums = strs.Select(p => int.Parse(p)).Take(num).ToArray();
//使用冒泡排序
for (int i = 0; i < nums.Length - 2; i++)
{
//循环遍历,让其跟自己后面所有数字做比较
for (int j = i + 1; j < nums.Length; j++)
{
//如果位置i的数字大于位置j的数字,就交换位置
if (nums[i] > nums[j])
{
//这是一种比较蛇皮的交换方法
nums[i] += nums[j];
nums[j] = nums[i] - nums[j];
nums[i] -= nums[j];
}
else
break;
}
}
//循环打印
for (int i = 0; i < nums.Length; i++)
{
//这里$为C#7.0语法,参考string.Format()
Console.Write($"{nums[i]} ");
}
//也可以使用
//Console.WriteLine(string.Join(" ",nums));
}
}
JAVA版本代码在接受值的方法和C#不一样,其他都一样
以下是JAVA获取数列的方法
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int a=scan.nextInt();
int[] aa=new int[a];
for (int i = 0; i < a; i++) {
aa[i]=scan.nextInt();
}
}
关于中间交换数组中两个值的位置,这里有一张图参考
我的博客地址:Wy博客
关注微信公众号:33技术客