Java中现成的数组排序包Arrays.sort的使用
文章目录
一、问题描述
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
二、输入格式
第一行为一个整数n。
第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
三、输出格式
输出一行,按从小到大的顺序输出排序后的数列。
四、样例输入
5
8 3 6 4 9
五、样例输出
3 4 6 8 9
六、代码
import java.util.*;
public class Main {
public static void main(String[]args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt(); //读取数组长度n
int a[] = new int[n]; //创建长度为n的数组
for(int i=0;i<a.length;i++)
{
a[i] = scan.nextInt(); //读取数组的每一位
}
Arrays.sort(a); //将数组由低到高排序
for(int i = 0;i < a.length; i++)
System.out.print(a[i]+" "); //输出数组
}
}
七、总结
1. 数组排序的三种常用方法:
(1)快速排序法
首先是最简单的Array.sort,直接进行排序(升序):
public static void main(String[] args) {
int[] arr = {4,3,5,1,7,9,3};
Arrays.sort(arr);
for (int i : arr){
System.out.println(i);
}
(2)部分排序法
使用Array.sort还可进行选择想要排序的部分数字,如将下角标编号为1~4的数字进行排序,其他数字顺序不变。
public static void main(String[] args) {
int[] arr = {4,3,5,1,2,9,3,0};
Arrays.sort(arr,1,4);
for (int i = 0;i<arr.length;i++){
System.out.print(arr[i]+",");
}
}
(3)冒泡排序法
顾名思义,从下到上,两两进行比较,越小的越往上,从而形成由小到大的排序。
public static void bubble(int[] arr){
int temp;
//根据角标进行比较,
for(int i = 0; i<arr.length; i++){
//j是数组的最后一个角标
for (int j = arr.length-1; j > i; j--) {
if (arr[j] < arr[j - 1]) {
//从后往前进行比较,小数往前,一轮之后最小数就在最前面了
temp = arr[j - 1];
arr[j - 1] = arr[j];
arr[j] = temp;
}
}
}
}
public static void main(String[] args) {
int[] arr = {3,22,5,3,66,2,9};
bubble(arr);
//使用foreach循环输出
for(int x : arr){
System.out.println(x);
}
//使用字符串表达形式输出,输出形式更为直观
System.out.println(Arrays.toString(arr));
}
2. java中数组的初始化
(1)动态初始化
数组类型[] 数组名 = new 数据类型[数组长度];
public class Study02{
public static void main(String[] args){
int[] arrays = new int[5]; //定义并开辟了一个长度为5的数组
// 可以将上面代码分成两句来写
int[] array = null; // 声明一个长度int[]类型的变量,变量会占用一块内存空间,它没有分配初始值。
array = new int[5]; //创建一个长度为5的数组,将数组的地址赋给变量arrays。
for(int i = 0; i < arrays.length; i++)
{
System.out.println("arrays[" + i + "] = " + arrays[i] + " ");
}
arrays[0] = 10; //数组的第一个元素
arrays[1] = 20; //数组的第二个元素
// 数组遍历
for(int x : array)
{
System.out.println(array[x]);
}
}
}
(2)静态初始化
简化格式:
数据类型[] 数组名称 = {值, 值, …};
完整格式(推荐):
数据类型[] 数组名称 = new 数据类型[]{值, 值, …};
int[] arrays = {1, 2, 3, 4, 5};
int[] arrays = new int[]{1, 2, 3, 4, 5};