西宁市住房和城乡建设局网站成都网站建设公司排名
学习指引
- 序、专栏前言
- 一.sort函数
- 二、【例题1】
- 1、题目描述
- 2、解题思路
- 3、模板代码
- 4、代码解析
- 二、【例题1】
- 1、题目描述
- 2、解题思路
- 3、模板代码
- 4、代码解析
- 三、推荐专栏
序、专栏前言
本专栏开启,目的在于帮助大家更好的掌握学习Java
,特别是一些Java学习者
难以在网上找到系统地算法学习资料帮助自身入门算法,同时对于专栏内的内容有任何疑问都可在文章末尾添加我的微信给你进行一对一的讲解。
但最最主要的还是需要独立思考,对于本专栏的所有内容,能够进行完全掌握,自己完完全全将代码写过一遍,对于算法入门肯定是没有问题的。
算法的学习肯定不能缺少总结,这里我推荐大家可以到高校算法社区将学过的知识进行打卡,以此来进行巩固以及复习。
学好算法的唯一途径那一定是题海战略,大量练习的堆积才能练就一身本领。专栏的任何题目我将会从【题目描述】【解题思路】【模板代码】【代码解析】等四板块进行讲解。
一.sort函数
sort
函数,顾名思义就是一个排序函数,它可以按照我们传递参数的要求,来将数组变得有序。虽然我们前面讲过好几种排序,但真正遇到排序的需求时,我们并不会去手写一个排序函数,而是使用库函数自带的排序,其底层实现主要是以快速排序为主,复杂度我们可以视为 O(nlogn)。O(nlogn)。O(nlogn)。
如何是想对数组进行排序,我们需要调用Arrays
这个包里的sort
函数,如果是集合类需要进行排序,我们则调用的是Collections
包里的sort
。排序时,我们可以传参指定部分区间排序,也可以选择是从小到大,还是从大到小,当然默认是从小到大进行排序。
二、【例题1】
1、题目描述
输入一个正数 nnn, 然后输出 nnn 个整数,请先将其顺序输出后再进行逆序输出
2、解题思路
我们根据题意,直接进行排序输出即可
3、模板代码
数组
import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();Integer[] a=new Integer[n];for (int i = 0; i < n; i++) {a[i]=sc.nextInt();}Arrays.sort(a);for (int i = 0; i < n; i++) {System.out.println(a[i]);}Arrays.sort(a, Collections.reverseOrder());for (int i = 0; i < n; i++) {System.out.println(a[i]);}}
}
集合
import java.util.*;public class Main{public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();List<Integer> list=new ArrayList<>();for (int i = 0; i < n; i++) {int x=sc.nextInt();list.add(x);}Collections.sort(list);for (int i = 0; i < n; i++) {System.out.println(list.get(i));}Collections.sort(list,Collections.reverseOrder());for (int i = 0; i < n; i++) {System.out.println(list.get(i));}}
}
4、代码解析
升序排序很好理解,但降序排序我们重点提一下。因为排序的方式默认为升序排序,如果想降序排序,最简单的方式就是传多一个参数Collections.reverseOrder()
。但此时如果数组类型是int
会报错,所以我们需要使用包装类Integer
,所以如果大家以后需要降序排序时数组类型可以使用Integer
。
二、【例题1】
1、题目描述
输入三个正数 nnn,lll, rrr , 然后输出 nnn 个整数,请将下标 [l,r][l,r][l,r] 排序后输出
2、解题思路
只排序某个区间,我们只需要多传入两个参数 lll 和 rrr 即可。
3、模板代码
import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int l=sc.nextInt();int r=sc.nextInt();int[] a=new int[n];for (int i = 0; i < n; i++) {a[i]=sc.nextInt();}Arrays.sort(a,l,r+1);for (int i = 0; i < n; i++) {System.out.println(a[i]);}}
}
4、代码解析
需要注意一点,Arrays.sort
传入参数排序的区间范围是 [l,r)[l,r)[l,r),左闭右开区间,如果我们想排序区间[l,r][l,r][l,r]那么我们传入的参数应该是 lll 和 r+1r+1r+1。