【Java】用Java实现插入排序

插入排序

简述

插入排序是一种简单直观且稳定的排序算法
插入排序十分像平时打牌的时候给整理扑克牌的过程
通常我们在打扑克整理牌的时候,是将每一章牌插入到其他已经有序的牌之中的适当位置的
插入排序也类似

图自百度百科:https://baike.baidu.com/item/%E6%8F%92%E5%85%A5%E6%8E%92%E5%BA%8F/7214992?fr=aladdin

交换次数和比较次数:

情况 比较次数 交换次数
最好情况(即本来数组已经有序排列) N-1 0
最坏情况(即数组刚好逆序) N^2/2 N^2\2
平均情况 N^2/4 N^2\4

插入排序不适合对于数据量比较大的排序应用。但是,如果需要排序的数据量很小,例如,量级小于千,那么插入排序还是一个不错的选择

代码展示

package Sort;

import java.util.*;

public class Insertion_Sort {
	//插入排序
	public static void sort(Comparable[] a) {
		int N =a.length;
		for (int i = 0; i<N; i++) {
			for(int j = i; j>0 && a[j].compareTo(a[j-1])<0; j--) {
				Comparable t = a[j];
				a[j] = a[j-1];
				a[j-1] = t;
			}
		}
	}
	
	
	//用于打印展示数组的方法
	private static void show(Comparable[] a) {
		for (int i = 0; i<a.length; i++) 
			System.out.print(a[i]+" ");
		System.out.println();
	}

	//用例
		public static void main(String[] args) {
			Scanner reader = new Scanner(System.in);
			String in = reader.nextLine();
			String[] a = in.split(" ");
			sort(a);//调用上面的选择排序方法
			show(a);
		}
}

输入输出结果:
输入:
35 99 75 61 85 46 84 75
输出:
35 46 61 75 75 84 85 99

排序成功!

样例可视化

例:运用插入排序排序数组{S,O,R,T,E,X,A,M,P,L,E}
Tips:没有黄色标记的元素是不用移动的
加粗的元素就是a[j]
为了插入新元素,被黄色标记的元素都往后移动了一格
i j 0 1 2 3 4 5 6 7 8 9 10
——————————————————————————
    S O R T E X A M P L E
1 0  S R T E X A M P L E
2 1 O  S T E X A M P L E
3 3 O R S  E X A M P L E
4 0  O R S T X A M P L E
5 5 E O R S T  A M P L E
6 0  E O R S T X M P L E
7 2 A E  O R S T X P L E
8 4 A E M O P R S T X L E
9 2 A E  M O P R S T X E
102 A E  L M O P R S T X

发布了4 篇原创文章 · 获赞 3 · 访问量 259

猜你喜欢

转载自blog.csdn.net/weixin_45434953/article/details/104240071