java 蓝桥 数列排序_蓝桥网试题 java 基础练习 数列排序

3a01f48ebc73ec2f8cb8bda4d65f4c6a.png

8b926164e12597f673ff4db44de0acb8.png

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

这道题是对排序的考察

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

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

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 list = new ArrayList();

Scanner sc = new Scanner(System.in);

int n = sc.nextInt();

for(int i=0;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 list = new ArrayList();

Scanner sc = new Scanner(System.in);

int n = sc.nextInt();

for(int i=0;i

list.add(sc.nextInt());

Collections.sort(list,new Comparator() {

public int compare(Integer o1, Integer o2) {

if(o1

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

a[i] = sc.nextInt();

//冒泡排序

for(int i=0;i

for(int k=0;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

a[i] = sc.nextInt();

//选择排序

for(int k=0; k

int min = k;

for(int i=k+1; 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

a[i] = sc.nextInt();

//插入排序

for(int i=1;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

a[i] = sc.nextInt();

for(int j=0;j

if(a[i]

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

a[i] = sc.nextInt();

for(int i=1;i

for(int k=0;k

if(a[i]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值