Java八大排序---直接插入排序

插入排序:
是对于预排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的
动态图解:
在这里插入图片描述
Java代码实现:

import java.util.Scanner;

public class Insert_sort {
//基本思想:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的序列的合适位置(从后向前找到合适的位置) 直到全部插入排序完为止
	
	
/*	插入排序
	从第一个元素开始,该元素可以认为已经被排序
	取下一个元素,在已经排序的元素序列中从后向前扫描
	如果该元素(已排序)大于新元素,将该元素移到下一个位置
	重复步骤三,直到找到已排序的元素小于或者等于新元素的位置
	将新元素插入到该位置中
	重复步骤2
*/
	
	
public static void main(String[] args) {
	// TODO Auto-generated method stub
	System.out.println("请输入数组的大小:");
	Scanner input = new Scanner(System.in);
	int a = input.nextInt();
	int [] arr = new int[a];
	for(int i = 0;i<arr.length;i++) {
		System.out.println("请输入数组的第"+(i+1)+"个值:");
		int s = input.nextInt();
		arr[i] = s;
	}
	arr = InsertSort(arr);
	for(int i = 0;i<arr.length;i++)
	System.out.print(" "+arr[i]+" ");
}

public static int[] InsertSort(int[] number) {
	int size = number.length;
	int temp = 0;
	int j = 0;
	for(int i = 1;i<size;i++) {
		//先将取下的这个元素赋值给中间变量
		temp = number[i];
		//假如temp比前面的值小,则将前面的值往后移
		for(j = i;j>0&&temp<number[j-1];j--) {
			//将值往后移一个单位
			number[j] = number[j-1];
		}
		//将这个取下的值找到合适的位置,即比前面的值大或者等于,比后面的值小
		number[j] = temp;
	}
	return number;
	}
}
发布了40 篇原创文章 · 获赞 2 · 访问量 3402

猜你喜欢

转载自blog.csdn.net/BEYONDmonster/article/details/100823688