蓝桥网试题 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 基础练习 杨辉三角形
----------------------------------------------------------- ---------------------------------------- ...
随机推荐
- Android 的Camera架构介绍
http://java-admin.iteye.com/blog/452464 第一部分 Camera概述Android的Camera包含取景器(viewfinder)和拍摄照片的功能.目前And ...
- (中等) POJ 3660 Cow Contest,Floyd。
Description N (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, are participating in a programming con ...
- CodeForces 631B Print Check
对于每一个格子,看是行最后画还是列最后画.预处理一下就可以了. #include<stdio.h> #include<string.h> int n,m,k; +]; +]; ...
- STM32F103 使用TIM3产生四路PWM
STM32F103 使用TIM3产生四路PWM 程序如下: /********************************************************************* ...
- Druid的简介及功能
Druid首先是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBoss DataSou ...
- 开源免费的C/C++网络库(c/c++ sockets library)补充
(1)ACE 庞大.复杂,适合大型项目.开源.免费,不依赖第三方库,支持跨平台. http://www.cs.wustl.edu/~schmidt/ACE.html (2)Asio Asio基于Boo ...
- 【转】C++ 11 右值引用的理解
右值引用的目的之一,是为了C++中一个比较影响性能的问题:拷贝临时对象,例如,在 int foo(){ ... } int x; x = foo(); 中,在第三句中,发生了以下的事情: 1.销毁 x ...
- leetcode--007 word break I
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA+4AAAC5CAIAAAA55fI7AAAZa0lEQVR4nO3dPW7bQIMG4L2MT6B7+A
- Android自定义控件(状态提示图表) (转)
源:Android自定义控件(状态提示图表) 源:Android应用开发 [工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处,尊重分享成果] 1 背景 前面分析 ...
- Jquery的AJAX应用详解
案例一:取得服务端当前时间 简单形式:jQuery对象.load(url),返回结果自动添加到jQuery对象代表的标签中间 <body> 当前时间: <span id=" ...