java数据结构学习(一)

java数据结构学习(一)之 排序算法

 

一、插入排序

public void insertionSort(){
	int in,out;
	for(out=1;out<nElems;out++){
		long temp=a[out];
		in=out;
		while(in>0 && a[in-1]>=temp){
			a[in]=a[in-1];
			in--;
		}
		a[in]=temp;
	}
}

 时间复杂度为O(n2),交换次数减少

在外层的For循环中,Out变量从1开始,向右移动。它标记了未排序部分的最左端的数据。而在内层的While循环中,In变量从Out变量开始,向左移动,直到Temp变量小于In所指的数组数据项,或者它已经不能再往左移动为止。Whild循环的每一趟都向右移动了一个已排序的数据项。

二、选择排序

public void selectionSort(){
	int out,in,min;
	for(out=0;out<nElems;out++){
		min=out;
		for(in=out+1;in<nElems;in++)
	  	if(a[in]<a[min])
                  	     min=in;
		     swap(out,min);//交换数组a[out]和a[min]
		}
	}
 

时间复杂度为O(n2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值