整理了一下java的几种排序,下面通过一些实例来了解一下
一.冒泡排序
简单说明:
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
package com.example.study06;
/**
* 冒泡排序
* @author Administrator
*
*/
public class Sort_one {
public static void main(String[] args) {
int arr[]={1,8,5,6,10,18};
int len=arr.length;
int temp;
for(int i=0;i<len;i++){
for(int j=i+1;j<len;j++){
//每个元素都两两比较并且交换一次
if(arr[i]>arr[j]){
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
for(int x:arr){
System.out.println(x);
}
}
}
二.选择排序
简单说明:
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。
package com.example.study06;
/**
* 选择排序
* @author Administrator
*
*/
public class Sort_two {
public static void main(String[] args) {
int arr[]={1,8,5,6,10,18};
int len=arr.length;
int k;//标志
int temp;//交换使用的
for(int i=0;i<len;i++){
k=i;
for(int j=i+1;j<len;j++){
if(arr[k]<arr[j]){
//如果数组的值大,就将标志位置为大的值,然后再往下比较
k=j;
}
}
//将记录的大值进行交换
temp=arr[k];
arr[k]=arr[i];
arr[i]=temp;
}
for(int x:arr){
System.out.println(x);
}
}
}
三.使用API方式和自定义接口实现逆序
简单说明:API默认的都是升序排序,所以我们要进行降序就要改写接口
package com.example.study06;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Comparator;
//定义自己的内部类,实现反向排序
class MyComparator implements Comparator<Integer>{
@Override
public int compare(Integer o1, Integer o2) {
////如果o1小于o2,我们就返回正值,如果o1大于o2我们就返回负值
//这样就实现反向排序了
if(o1<o2){
return 1;
}
else if(o1>o2){
return -1;
}
else{
return 0;
}
}
}
public class Sort_three {
public static void main(String[] args) {
Integer arr[]={1,8,5,6,10,18};
int len=arr.length;
//API默认从小到大排序
Arrays.sort(arr);
System.out.println("正向排序:");
for(int x:arr){
System.out.println(x);
}
//进行反序排序
Comparator m=new MyComparator();
Arrays.sort(arr,m);
System.out.println("反向排序:");
for(int x:arr){
System.out.println(x);
}
}
}
关注公众号,获取更多资源
每天进步一点点,开心也多一点点