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

这道题是对排序的考察

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

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 基础练习 数列排序的更多相关文章

  1. 蓝桥网试题 java 基础练习 数列特征

    ----------------------------------- Collections.sort(list);是个好东西 但是要学会排列 然后你才能浪 -------------------- ...

  2. 蓝桥网试题 java 基础练习 十六进制转八进制

    - -------------------------------------------------------------------------------------------------- ...

  3. 蓝桥网试题 java 基础练习 矩形面积交

    ------------------------------------------------------------------------------------------- 思路见锦囊2 - ...

  4. 蓝桥网试题 java 基础练习 矩阵乘法

    ------------------------------------------------------------ 第一次感觉到好好学习的重要性QAQ 在做这道题之前请先学会 :矩阵乘法(百度百 ...

  5. 蓝桥网试题 java 基础练习 分解质因数

    -------------------------------------------------------------------------- 递归更多的用在多分支情况中 本题用循环就可以了 用 ...

  6. 蓝桥网试题 java 基础练习 字符串对比

    -------------------------------------------------------------------------------- java有很多可以拿来用的方法为什么不 ...

  7. 蓝桥网试题 java 基础练习 时间转换

    --------------------------------------- --------------------------------------- import java.util.*; ...

  8. 蓝桥网试题 java 基础练习 特殊的数字

    -------------------------------------------------------- 笑脸 :-) ------------------------------------ ...

  9. 蓝桥网试题 java 基础练习 杨辉三角形

    ----------------------------------------------------------- ---------------------------------------- ...

随机推荐

  1. tls session resumption

    http://stackoverflow.com/questions/12318325/resume-tls-connection-in-java As long as you use the sam ...

  2. Linux下的强大工具之一sed(转),Shell必备

    sed命令基本用法sed是一个非交互式文本编辑器,它可以对文本文件和标准输入进行编辑,标准输入可以是来自键盘输入.文件重定向.字符串.变量.来自管道的文本等等.sed从文本的一个文本行或标准输入中读取 ...

  3. url语法

    URL的主要部分 URL通常被写成如下形式: <方案>:<方案描述部分> 一个URL包含了它使用的方案名称(<方案>), 其后紧跟一个冒号,然后是一个字符串 (&l ...

  4. 有趣的keil MDK细节(转)

    源:有趣的keil MDK细节 1.MDK中的char类型的取值范围是? 在MDK中,默认情况下,char 类型的数据项是无符号的,所以它的取值范围是0-255.它们可以显式地声明为signed ch ...

  5. COM问题

    因为应用程序正在发送一个输入同步呼叫,所以无法执行传出的呼叫.

  6. java之常用正则表达式

    http://www.cnblogs.com/helloczh/articles/1648029.html http://wenku.baidu.com/link?url=gLcsovVfQqRTVa ...

  7. linux ssl 双向认证

    一,首先切换到apache目录下,创建一个CA文件夹 sudo mkdir CA sudo chmod 777 CA 二,然后进去CA文件夹 cp CA 三,创建其它文件 mkdir demoCA m ...

  8. js arguments.callee & caller的用法及区别

    在函数内部,arguments.callee该属性是一个指针,指向拥有这个arguments对象的函数; 而函数对象的另一个属性:caller,这个属性保存着调用当前函数的函数的引用,如果是在全局作用 ...

  9. Xcode--Alcatraz来管理Xcode插件

    简介 Alcatraz是一个帮你管理Xcode插件.模版以及颜色配置的工具.它可以直接集成到Xcode的图形界面中,让你感觉就像在使用Xcode自带的功能一样. 安装和删除 使用如下的命令行来安装Al ...

  10. 组织Golang代码

    本月初golang官方blog(需要自己搭梯子)上发布了一篇文章,简要介绍了近几个月Go在一 些技术会议上(比如Google I/O.Gopher SummerFest等)的主题分享并伴有slide链 ...