蓝桥杯试题:冒泡排序 选择排序
一、问题描述
在一个神秘的岛屿上,有一支探险队发现了一批宝藏,这批宝藏是以整数数组的形式存在的。每个宝藏上都标有一个数字,代表了其珍贵程度。然而,由于某种神奇的力量,这批宝藏的顺序被打乱了,探险队需要将宝藏按照珍贵程度进行排序,以便更好地研究和保护它们。作为探险队的一员,肖恩需要设计合适的排序算法来将宝藏按照珍贵程度进行从小到大排序。请你帮帮肖恩。
输入描述
输入第一行包括一个数字 nn ,表示宝藏总共有 nn 个。
输入的第二行包括 nn 个数字,第 ii 个数字 a[i]a[i] 表示第 ii 个宝藏的珍贵程度。
数据保证 1≤n≤1000,1≤a[i]≤1061≤n≤1000,1≤a[i]≤106 。
输出描述
输出 nn 个数字,为对宝藏按照珍贵程度从小到大排序后的数组。
样例输入
5
1 5 9 3 7
样例输出
1 3 5 7 9
二、代码展示
1.冒泡排序
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int[] f = new int[n];
for(int i = 0 ; i < n ; i++)
{
f[i] = scan.nextInt();
}
for(int i =0 ; i < n ; i++){
for(int j = i+1 ; j < n ; j++){
if(f[i] > f[j]){
int temp = f[i];
f[i] = f[j];
f[j] = temp;
}
}
}
for(int i = 0 ; i < n ; i++)
{
System.out.print(f[i] + " ");
}
scan.close();
}
}
2.选择排序
import java.util.Scanner;
import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
scan.nextLine();
int[] f = new int[n];
for(int i = 0 ; i < n ; i++)
{
f[i] = scan.nextInt();
}
for(int i = 0; i < n;i++){
int min = i;
for(int j = i+1 ; j < n; j++){
if(f[min] > f[j]){
min = j;
}
}
int temp = f[i];
f[i] = f[min];
f[min] = temp; }
for(int i = 0 ; i < n ; i++)
{
System.out.print(f[i] + " ");
}
scan.close();
}
}
if(f[min] > f[j]){
min = j;
}
注意不能写成 i 和 j 的比较