选择排序

选择排序:

元素个数:n

外层循环:0<=out<=n-2,循环到倒数第二个元素

内层循环:out+1<=in<=n-1,从out后一个元素循环到最后一个元素

过程:将out后面的所有元素与当前out元素值比较,保证out位置的元素是从out到最后的这些元素中最小的。

package datastructure.c3.sort.selectsort;

public class ArraySel {
	private long[] a;
	private int nElems;
	public ArraySel(int max){
		a=new long[max];
		nElems=0;
	}
	public void insert(long value){
		a[nElems]=value;
		nElems++;
	}
	public void display(){
		for(int j=0;j<nElems;j++){
			System.out.print(a[j]+"  ");
		}
		System.out.println("  ");
	}
	/**
	 * 选择排序
	 * 比较效率O(N^2),交换效率O(N)
	 */
	public void selectionSort(){
		int out,in,min;
		for(out=0;out<nElems-1;out++){
			min=out;
			for(in=out+1;in<nElems;in++){
				if(a[in]<a[min]){
					min=in;
				}
			}
			swap(out,min);
		}
	}
	private void swap(int one,int two){
		long temp=a[one];
		a[one]=a[two];
		a[two]=temp;
	}
}

package datastructure.c3.sort.selectsort;

public class SelectSortApp {
	public static void main(String[] args) {
		int maxSize=100;
		ArraySel arr;
		arr=new ArraySel(maxSize);
		
		arr.insert(77);
		arr.insert(99);
		arr.insert(44);
		arr.insert(55);
		arr.insert(22);
		arr.insert(88);
		arr.insert(11);
		arr.insert(00);
		arr.insert(66);
		arr.insert(33);
		
		arr.display();
		arr.selectionSort();
		arr.display();
	}
}


交换效率高于冒泡排序,故整体效率高于冒泡排序。

当数组较小,且交换的时间比比较的时间大得多时(极端情形如逆序),选择排序较快。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值