Java排序常用的排序方法
相信很多小伙伴刚刚开始学习java这门语言的时候,都感觉各种各样的排序,对我们的小伙伴太不好友好了,看看这几种方法,你绝对能把它们按在地上摩擦,下面我将为大家说几种比较常见的方法,第一个方法只要有手就能学会话不多说,看操作。
第一种:直接调用java内置方法:Arrays.sort(需要排序的数组);升序排序
importjava.util.Arrays;
public class Px1 {
public static void main(String[] args) {
int []arr= {25,37,29,65};
// 注意:一定要导入这个才行:import java.util.Arrays;
Arrays.sort(arr);//调用方法便可以实现从小到大进行排序
System.out.println(Arrays.toString(arr));
}
}
//运行结果:[25,29, 37, 65]
第二种:选择排序法:
实现原理:就是利用双层循环,从arr[0]开始选一个数字出来与其他的数字比较,一轮下来,就出现了一个最大值或者最小值,然后把这个位置放到数组下标的第一个位置,然后第二次继续从arr[1]中选一个数字和剩下的数字做比较,直到排序完成。
public class Px2 {
public static void main(String[] args) {
// 创建一个数组
int[] arr = new int[] { 12, 15, 26, 36, 10, 56, 26 };
Sort(arr); //调用排序这个方法
//输出排序完之后的结果
System.out.print("排序后的结果:"+Arrays.toString(arr));
}
public static void Sort(int[] arr) {
int temp,n=0;//定义一个变量用于交换两个数的值,当然也可以不用定义这个变量,用其他的交换方式也可以
for (int i = 0; i < arr.length; i++) {
for (int j= i+1; j < arr.length-1; j++) {
if(arr[i]<arr[j]) //改变这里的大于小于符号可以改变数组的从大到小,或从小到大的排序方式
{
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
}
/*
第一次:将arr[0]这个值,也就是12,和 12, 15, 26, 36, 10, 56, 26这串数字做比较,得出的排序结果为:[56, 12, 15, 26, 10, 36, 26]
第二次:将arr[1]这个值,也就是15,和 12, 15, 26, 36, 10, 56, 26这串数字做比较,得出的排序结果为:[56, 36, 12, 15, 10, 26, 26]
第三次:将arr[2]这个值,也就是26,和 12, 15, 26, 36, 10, 56, 26这串数字做比较,得出的排序结果为:[56, 36, 26, 12, 10, 15, 26]
第四次:将arr[3]这个值,也就是36,和 12, 15, 26, 36, 10, 56, 26这串数字做比较,得出的排序结果为:[56, 36, 26, 26, 10, 12, 15]
第五次:将arr[4]这个值,也就是10,和 12, 15, 26, 36, 10, 56, 26这串数字做比较,得出的排序结果为:[56, 36, 26, 26, 15, 10, 12]
第六次:将arr[5]这个值,也就是56,和 12, 15, 26, 36, 10, 56, 26这串数字做比较,得出的排序结果为:[56, 36, 26, 26, 15, 12, 10]
第七次:将arr[6]这个值,也就是26,和 12, 15, 26, 36, 10, 56, 26这串数字做比较,得出的排序结果为:[[56, 36, 26, 26, 15, 12, 10]
这里经过七次的比较得出了最后的排序结果:[56, 36, 26, 15, 12, 10, 26],相信大家也看出来了,这样的排序
会有多余的计算,会降低计算机的计算效率,但是为了大家能更清楚的明白选择排序法的原理,我就先这样做了,
大家明白了这个原理,大家可以对这个排序进行改进, 去掉多余的计算次数,提高代码的运行效率。
*/
}
效果图片:
第三种:冒泡排序
原理:所谓的冒泡排序法,就是相邻的两个数字进行比较,如果谁大或者小,就交换位置和相邻的下一个元素比较,第一趟比较完,就把最大或最小值放到末尾去了,接下来在第二趟,直到比较完,排序也就完成。
这里是第一趟:其余的我就不写了大家慢慢自己去推,便于大家自己理解
需要从小到大排序的数据:15,12,25,13
第一次:12,15,25,13
第二次:12,15,25,13
第三次:12,15,13,25
经过三次相邻的比较,就把最大的一个值放到了最后一个位置,直到将这个数据排序完成
public class Px3 {
public static void main(String[] args) {
// 创建一个数组
int[] arr = new int[] { 12, 15, 26, 36, 10, 56, 26 };
Sort(arr); //调用排序这个方法
//输出排序完之后的结果
System.out.print("排序后的结果:"+Arrays.toString(arr));
}
public static void Sort(int[] arr) {
int temp,n=0;//定义一个变量用于交换两个数的值,当然也可以不用定义这个变量,用其他的交换方式也可以
for (int i = 0; i < arr.length; i++) {
for (int j= 0; j < arr.length-1; j++) {
if(arr[j]<arr[j+1]) //改变这里的大于小于符号可以改变他的从大到小,或从小到大
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
System.out.println("第"+i+"次排序结果:"+Arrays.toString(arr));
}
}
}