入门训练 数列排序

--------------------------------------------------------------------------------------------------------

这道题是对排序的考察

--------------------------------------------------------------------------------------------------------

算法一(冒泡排序)

相邻两个比较,把较大的往上替换循环往复,这样大的会像冒泡一样一个一个冒出来(滑稽0.0)

 1 import java.util.*;
 2 public class Main {
 3     public static void main(String[] args) {
 4         Scanner sc = new Scanner(System.in);
 5         int n = sc.nextInt();
 6         int[] a = new int[n];
 7         for(int i=0;i<n;i++)
 8             a[i] = sc.nextInt();
 9         //冒泡排序
10         for(int i=0;i<n-1;i++){
11             for(int k=0;k<n-1-i;k++){
12                 if(a[k]>a[k+1]){
13                     int tmp = a[k];
14                     a[k] = a[k+1];
15                     a[k+1] = tmp;
16                 }
17             }
18         }
19         for (int i : a) {
20             System.out.print(i+" ");
21         }
22     }
23 }

算法二(选择排序)

每次循环找到最小的下标替换到前面去(有临时变量存下标,手动选择qaq)

 1 import java.util.*;
 2 public class Main {
 3     public static void main(String[] args) {
 4         Scanner sc = new Scanner(System.in);
 5         int n = sc.nextInt();
 6         int[] a = new int[n];
 7         for(int i=0;i<n;i++)
 8             a[i] = sc.nextInt();
 9         //选择排序
10         for(int k=0; k<n-1; k++) {
11             int min = k;
12             for(int i=k+1; i<n; i++) {
13                 if(a[i] < a[min]) {
14                     min = i;
15                 }
16             }
17             if(k != min) {
18                 int temp = a[k];
19                 a[k] = a[min];
20                 a[min] = temp;
21             }
22         }
23         for (int i : a) {
24             System.out.print(i+" ");
25         }
26     }
27 }

算法三(插入排序)

把前面部分看成插入区域,每次把后面一个数有选择的插入到前面去(如果小于前面的数,就把前面的数向后移,如果大于就直接替换)

 1 import java.util.*;
 2 public class Main {
 3     public static void main(String[] args) {
 4         Scanner sc = new Scanner(System.in);
 5         int n = sc.nextInt();
 6         int[] a = new int[n];
 7         for(int i=0;i<n;i++)
 8             a[i] = sc.nextInt();
 9         //插入排序
10         for(int i=1;i<n;i++){
11             int tmp = a[i];
12             for(int k=i-1;k>=0;k--){
13                 if(a[k]>tmp){
14                     a[k+1] = a[k];
15                     a[k] = tmp;
16                 }else
17                     break;
18             }
19         }
20         for (int i : a) {
21             System.out.print(i+" ");
22         }
23     }
24 }

其他算法(临时写的)

算法一(类似插入排序,直接在获取数值的时候就排序)

 1 import java.util.*;
 2 public class Main {
 3     public static void main(String[] args) {
 4         Scanner sc = new Scanner(System.in);
 5         int n = sc.nextInt();
 6         int[] a = new int[n];
 7         //单排
 8         for(int i=0;i<n;i++){
 9             a[i] = sc.nextInt();
10             for(int j=0;j<i;j++){
11                 if(a[i]<a[j]){
12                     int tmp = a[i];
13                     a[i] = a[j];
14                     a[j] = tmp;
15                 }
16             }
17         }
18         for (int i : a) {
19             System.out.print(i+" ");
20         }
21     }
22 }

算法二(冒泡和插入的结合怪胎,最开始没理解透插入算法就写了一个怪胎0.0)

 1 import java.util.*;
 2 public class Main {
 3     public static void main(String[] args) {
 4         Scanner sc = new Scanner(System.in);
 5         int n = sc.nextInt();
 6         int[] a = new int[n];
 7         //冒泡和插入的结合怪胎
 8         for(int i=0;i<n;i++)
 9             a[i] =  sc.nextInt();
10         for(int i=1;i<n;i++){
11             for(int k=0;k<i;k++){
12                 if(a[i]<a[k]){
13                     int tmp = a[i];
14                     a[i] = a[k];
15                     a[k] = tmp;
16                 }
17             }
18         }
19         for (int i : a) {
20             System.out.print(i+" ");
21         }
22     }
23 }
时间: 2024-08-24 17:57:43

入门训练 数列排序的相关文章

【蓝桥杯】入门训练 Fibonacci数列

入门训练 Fibonacci数列 时间限制:1.0s   内存限制:256.0MB 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. 输入格式 输入包含一个整数n. 输出格式 输出一行,包含一个整数,表示Fn除以10007的余数. 说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余

蓝桥杯 入门训练 Fibonacci数列(Java)

@Author : qingdujun 入门训练 Fibonacci数列  : http://lx.lanqiao.org/problem.page?gpid=T4 import java.util.Scanner; /** * 蓝桥杯: 入门训练 Fibonacci数列 * @author qingdujun * */ public class Main { public static void main(String[] args) { int f1 = 1; int f2 = 1; int

入门训练 Fibonacci数列 (水题)

入门训练 Fibonacci数列 时间限制:1.0s   内存限制:256.0MB 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. 输入格式 输入包含一个整数n. 输出格式 输出一行,包含一个整数,表示Fn除以10007的余数. 说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余

蓝桥杯入门训练——Fibonacci数列

果然是好长时间没有刷题,脑袋都秀逗了.所以说刷题是日常必需品,不能断啊, 因为蓝桥杯还有一个月左右时间,所以又开始了我的刷题道路,但是自从到了4208之后就没太怎么刷题了,也就是说有一个学期没有刷题了. 真的是有些简单的题在很多简单的地方又错了. 从现在开始要经常刷题,摆在你面前的就是刷刷刷!!! 蓝桥网练习系统入门训练 就没有让我省心. 难道是智商又退了吗. 这道题我硬是交了四五遍啊!!! 第一遍 超时  直接计算出了f(n)然后再求的模10007, 原来是我把题目想的太简单了! #inclu

蓝桥杯练习系统--入门训练+基础练习

入门训练 <1>Fibonacci数列 问题描述  Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. 输入格式  输入包含一个整数n. 输出格式  输出一行,包含一个整数,表示Fn除以10007的余数. 说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取

[渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:排序、筛选和分页

这是微软官方SignalR 2.0教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第三篇:排序.筛选和分页 原文:Sorting, Filtering, and Paging with the Entity Framework in an ASP.NET MVC Application 译文版权所有,谢绝全文转载--但你可以在你的网站上添加到该教程的链接. 在之前的教程中你实现了一组使用Web页面

【蓝桥杯】 入门训练 圆的面积

入门训练 圆的面积 时间限制:1.0s   内存限制:256.0MB 问题描述 给定圆的半径r,求圆的面积. 输入格式 输入包含一个整数r,表示圆的半径. 输出格式 输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积. 说明:在本题中,输入是一个整数,但是输出是一个实数. 对于实数输出的问题,请一定看清楚实数输出的要求,比如本题中要求保留小数点后7位,则你的程序必须严格的输出7位小数,输出过多或者过少的小数位数都是不行的,都会被认为错误. 实数输出的问题如果没有特别说明,舍入都是按四

【蓝桥杯】 入门训练 序列求和

入门训练 序列求和 时间限制:1.0s   内存限制:256.0MB 问题描述 求1+2+3+...+n的值. 输入格式 输入包括一个整数n. 输出格式 输出一行,包括一个整数,表示1+2+3+...+n的值. 样例输入 4 样例输出 10 样例输入 100 说明:有一些试题会给出多组样例输入输出以帮助你更好的做题. 一般在提交之前所有这些样例都需要测试通过才行,但这不代表这几组样例数据都正确了你的程序就是完全正确的,潜在的错误可能仍然导致你的得分较低. 样例输出 5050 数据规模与约定 1

数列排序 sort qsort

基础练习 数列排序 时间限制:1.0s   内存限制:512.0MB 锦囊1 锦囊2 锦囊3 问题描述 给定一个长度为n的数列,将这个数列按从小到大的顺序排列.1<=n<=200 输入格式 第一行为一个整数n. 第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000. 输出格式 输出一行,按从小到大的顺序输出排序后的数列. 样例输入 5 8 3 6 4 9 样例输出 3 4 6 8 9 1 #include<iostream> 2 #include<algorith