蓝桥网试题 java 基础练习 数列排序
--------------------------------------------------------------------------------------------------------
这道题是对排序的考察
--------------------------------------------------------------------------------------------------------
Arrays数组也有sort方法(自动排序)
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
for(int i=0;i<n;i++)
a[i] = sc.nextInt();
Arrays.sort(a);
for(int i:a)
System.out.print(i+" ");
}
}
用容器的方法
import java.util.*;
public class Main {
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i=0;i<n;i++)
list.add(sc.nextInt());
Collections.sort(list);
for(int i:list)
System.out.print(i+" ");
}
}
import java.util.*;
public class Main {
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i=0;i<n;i++)
list.add(sc.nextInt());
Collections.sort(list,new Comparator<Integer>() {
public int compare(Integer o1, Integer o2) {
if(o1<o2)
return 1;
else if(o1>o2)
return -1;
else
return 0;
}
});
for(int i:list)
System.out.print(i+" ");
}
}
算法一(冒泡排序)
相邻两个比较,把较大的往上替换循环往复,这样大的会像冒泡一样一个一个冒出来(滑稽0.0)
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
for(int i=0;i<n;i++)
a[i] = sc.nextInt();
//冒泡排序
for(int i=0;i<n-1;i++){
for(int k=0;k<n-1-i;k++){
if(a[k]>a[k+1]){
int tmp = a[k];
a[k] = a[k+1];
a[k+1] = tmp;
}
}
}
for (int i : a) {
System.out.print(i+" ");
}
}
}
算法二(选择排序)
每次循环找到最小的下标替换到前面去(有临时变量存下标,手动选择qaq)
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
for(int i=0;i<n;i++)
a[i] = sc.nextInt();
//选择排序
for(int k=0; k<n-1; k++) {
int min = k;
for(int i=k+1; i<n; i++) {
if(a[i] < a[min]) {
min = i;
}
}
if(k != min) {
int temp = a[k];
a[k] = a[min];
a[min] = temp;
}
}
for (int i : a) {
System.out.print(i+" ");
}
}
}
算法三(插入排序)
把前面部分看成插入区域,每次把后面一个数有选择的插入到前面去(如果小于前面的数,就把前面的数向后移,如果大于就直接替换)
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
for(int i=0;i<n;i++)
a[i] = sc.nextInt();
//插入排序
for(int i=1;i<n;i++){
int tmp = a[i];
for(int k=i-1;k>=0;k--){
if(a[k]>tmp){
a[k+1] = a[k];
a[k] = tmp;
}else
break;
}
}
for (int i : a) {
System.out.print(i+" ");
}
}
}
其他算法(临时写的)
算法一(类似插入排序,直接在获取数值的时候就排序)
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
//单排
for(int i=0;i<n;i++){
a[i] = sc.nextInt();
for(int j=0;j<i;j++){
if(a[i]<a[j]){
int tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
for (int i : a) {
System.out.print(i+" ");
}
}
}
算法二(冒泡和插入的结合怪胎,最开始没理解透插入算法就写了一个怪胎0.0)
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
//冒泡和插入的结合怪胎
for(int i=0;i<n;i++)
a[i] = sc.nextInt();
for(int i=1;i<n;i++){
for(int k=0;k<i;k++){
if(a[i]<a[k]){
int tmp = a[i];
a[i] = a[k];
a[k] = tmp;
}
}
}
for (int i : a) {
System.out.print(i+" ");
}
}
}
蓝桥网试题 java 基础练习 数列排序的更多相关文章
- 蓝桥网试题 java 基础练习 数列特征
----------------------------------- Collections.sort(list);是个好东西 但是要学会排列 然后你才能浪 -------------------- ...
- 蓝桥网试题 java 基础练习 十六进制转八进制
- -------------------------------------------------------------------------------------------------- ...
- 蓝桥网试题 java 基础练习 矩形面积交
------------------------------------------------------------------------------------------- 思路见锦囊2 - ...
- 蓝桥网试题 java 基础练习 矩阵乘法
------------------------------------------------------------ 第一次感觉到好好学习的重要性QAQ 在做这道题之前请先学会 :矩阵乘法(百度百 ...
- 蓝桥网试题 java 基础练习 分解质因数
-------------------------------------------------------------------------- 递归更多的用在多分支情况中 本题用循环就可以了 用 ...
- 蓝桥网试题 java 基础练习 字符串对比
-------------------------------------------------------------------------------- java有很多可以拿来用的方法为什么不 ...
- 蓝桥网试题 java 基础练习 时间转换
--------------------------------------- --------------------------------------- import java.util.*; ...
- 蓝桥网试题 java 基础练习 特殊的数字
-------------------------------------------------------- 笑脸 :-) ------------------------------------ ...
- 蓝桥网试题 java 基础练习 杨辉三角形
----------------------------------------------------------- ---------------------------------------- ...
随机推荐
- html-div-css
用CSS实现拉动滚动条时固定网页背景不动 body{ background-image: url(./inc/bgbk.jpg); background-attachm ...
- SpingMvc 中文乱码 post 方式解决方案
Web.xml <!-- spring 中文乱码问题 --> <filter> <filter-name>encodingFilter</filter-nam ...
- nginx实战
原文:http://www.cnblogs.com/yucongblog/p/6289628.html nginx实战 (一) nginx环境的搭建安装流程: 1 通过ftp将nginx-1.11 ...
- HUST 1606 Naive
预处理一下,然后o(1)询问. #include<cstdio> #include<cstring> #include<cmath> #include<str ...
- UVA 11551 Experienced Endeavour
矩阵快速幂. 题意事实上已经告诉我们这是一个矩阵乘法的运算过程. 构造矩阵:把xi列的bij都标为1. 例如样例二: #include<cstdio> #include<cstrin ...
- 设计模式笔记之一:MVP架构模式入门(转)
写在前面:昨天晚上,公司请来专家讲解了下MVP,并要求今后各自负责的模块都要慢慢的转到MVP模式上来.以前由于能力有限,没有认真关注过设计模式.框架什么的,昨晚突然兴趣大发,故这两天空闲时间一直在学习 ...
- 学习wcf
链接请看下面 第一部分:http://boytnt.blog.51cto.com/966121/796884 第二部分:http://boytnt.blog.51cto.com/966121/7969 ...
- jQuery-ui datepicker的使用演示代码
这两天使用jquery做一个web端展示的工具,遇到了不少问题也学到了不少知识.其中有一个就是在页面中显示日期选择器的功能,通过百度直接使用的是jquery datepicker 看到一篇使用说明很不 ...
- PHP大小写问题
PHP对于系统函数.用户自定义函数.类名称等是不区分大小写的如可以用EHCO也可以用echo调用显示函数, 但对于变量名称又是区分大小写的,如$Name和$NAME是2个不同的变量. 而对于文件名又因 ...
- PHP获取当前类名、函数名、方法名
PHP获取当前类名.方法名 __CLASS__ 获取当前类名 __FUNCTION__ 当前函数名(confirm) __METHOD__ 当前方法名 (bankcard::confirm) _ ...