java的几种简单排序

整理了一下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);
		}
	}

}

关注公众号,获取更多资源
在这里插入图片描述

每天进步一点点,开心也多一点点

发布了60 篇原创文章 · 获赞 66 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/weixin_40169642/article/details/97611694