详解插入排序算法

匿名 (未验证) 提交于 2019-12-02 23:03:14

思路:
将数组的0到0位置弄有序,再将0到1位置弄有序,再将0到2位置弄有序,最后将0到n-1位置弄有序,这个数组也就有序了。
我们假设有一个数组,2, 3, 4, 1, 3。0到0上的位置就只有一个数字2,有序,不用做改变。

0到1有序,0到2有序。好,现在到0到3了。




现在是0到4了。

代码:

import java.util.Scanner; public class InsertSort { 	//插入排序算法核心 	public static void insert(int a[]) 	{ 		if(a == null || a.length < 2) 		{ 			return; 		} 		for(int i = 1; i < a.length; i++) 		{ 			for(int j = i - 1; j >= 0 && a[j] > a[j + 1]; j--) 			{ 				swap(a, j, j + 1); 			} 		} 	} 	 	//将数组中的两个数交换 	public static void swap(int a[], int i, int j) 	{ 		int temp; 		temp = a[i]; 		a[i] = a[j]; 		a[j] = temp; 	} 	 	public static void main(String args[]) 	{ 		//输入数组中有几个数 		System.out.print("请输入一个正整数:"); 		 		Scanner input = new Scanner(System.in); 		int n = input.nextInt(); 		 		//创建数组 		int a[] = new int[n]; 		for(int i = 0; i < n; i++) 		{ 			a[i] = input.nextInt(); 		} 		 		input.close(); 		 		//调用插入排序函数 		insert(a); 		 		//输出排序后的数组 		for(int i = 0; i < n; i++) 		{ 			System.out.println(a[i]); 		} 	} } 

实验结果图:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!