Java的三种 简单排序

1,冒泡排序

是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

Java实现代码

private static void bubbleSort(int[] array) {
		//冒泡排序
		/*
		 * 稳定: 没有跳跃的比较,所以比较稳定
		 * 时间复杂度:o(n^2)
		 */
		// TODO Auto-generated method stub
		
		System.out.println(System.currentTimeMillis());//程序执行的时间
		int tmp=0;
		for(int i=0;i

但是当一个数组本身就是有序的时候,此时用冒泡排序就会增加很多时间复杂度

所以我们应该对冒泡 排序进行优化。

如果让它进行第一趟比较时并没有进行任何交换,那么就说明这个数组本身就是有序的

public static void newbbsort(int[] array){
		System.out.println(System.currentTimeMillis());
		int tmp=0;
		int k=0;
		for(int i=0;i


Java的三种 简单排序_第1张图片

这个时候的时间之差为1

-------------如果用没有优化之前的--------------

时间差就大许多!!!!

2,选择排序

是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[553]第一次就将第一个[5][3]交换,导致第一个5挪动到第二个5后面)

java实现代码

public class Test7 {
	public static void main(String[] args) {
		int[] array={23,45,2,3,657,8};		
		selectSort(array);
		System.out.println(Arrays.toString(array));
	}
	public static void selectSort(int[] array){
		int min;
		int tmp;
		for(int i=0;i

3,直接插入排序

是一种简单的排序算法,相当于生活中打扑克牌的方式,将一个数插入在一个有序的数列中。插入之后也要保证有序。

java实现代码

public class Test7 {
	public static void main(String[] args) {
		int[] array={23,45,2,3,657,8};		
		InsrtSort(array);
		System.out.println(Arrays.toString(array));
	}
	public static void InsrtSort(int[] array){
		//不稳定
		int temp;
		int j;
		for(int i=1;i=0;j--){
				if(array[j]>temp){
					array[j+1]=array[j];
				}else {//每次排序过后前面已经有序,找到第一个比temp小的。
					break;
				}
			}
			array[j+1]=temp;
		}
	}
}

你可能感兴趣的:(Java基础)