Java实现插入排序法

插入排序法是将数组中的元素,逐一与已排序好的数据进行比较,前两个元素先排好,再将第三个元素插入适当的位置,所以这三个元素仍然是已排序好的,接着再将第四个元素加入,重复此步骤,直到排序完成为止。可以看作是一串有序的记录R1,R2,R3…Ri中插入新的记录Ri+1,使得i+1个记录排序妥当。
1.最坏和平均情况需比较n(n-1)/2次;时间复杂度为O(n^2),最好情况的时间复杂度为O(n)。
2.插入排序是稳定排序法。
3.只需一个额外的空间,所以空间复杂度为最佳。
4.此排序法适用于大部分数据已经过排序或已排序数据库新增数据后进行排序的情况。
5.插入排序法会造成数据的大量搬移,所以建议在链表上使用。

package Sort;
import java.io.*;
//设计一个插入排序法,自行输入6个数据,并进行插入排序。
public class InsertingSort {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		int data[]=new int[6];
		int size=6;
		int j;//定位比较的元素
		int temp;//暂存数据
		for(int i=0;i<size;i++) {//输入数组数据
			System.out.print("请输入第"+(i+1)+"个元素:");
			InputStreamReader isr=new InputStreamReader(System.in);
			BufferedReader br=new BufferedReader(isr);
			data[i]=Integer.parseInt(br.readLine());
		}
		
		for(int i=1;i<size;i++) {
			j=i-1;
			temp=data[i];
			while(j>=0&&temp<data[j]) {//如果第二个元素小于第一个元素
				data[j+1]=data[j];//就把所有元素往后推一个位置
				j--;
			}
			data[j+1]=temp;//最小的元素放到第一个元素
			
		}
		for(int i=0;i<size;i++) {//打印数组数据
			System.out.print(data[i]+" ");
		}
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值