选择排序算法

选择排序(不稳定)

以从小到大排序为例,第i次选择第i小的元素放在第i个位置,然后i++。

1.C++代码

void selectionSort(int arr[],int n){
	for(int i=0;i<n;i++){
		//寻找[i,n]区间里的最小值
		int min=arr[i];//记录当前这一轮儿最小值
		int syb=i;//记录当前这一轮儿最小值的下标
		for(int j=i+1;j<n;j++){
			if(min>arr[j]){
				min=arr[j];//记录此次最小值
				syb=j;//记录此次最小值下标
			}
		}
		swap(arr[i],arr[syb]);//交换当前位置元素和当前轮儿最小值元素的位置
	}
}

妈的好久不练习,写个选择排序也能写错,得多练习啊!!

2.Java代码

public class SelectionSort{
	private SelectionSort(){}
	public static void sort(int[] arr){
		int n=arr.length;
		for(int i=0;i<n;i++){
			//寻找[i,n)区间里的最小值的索引
			int minIndex=i;
			for(int j=i+1;j<n;j++){
				if(arr[j]<arr[minIndex])
					minIndex=j;
			}
			swap(arr,i,minIndex);
		}	
	}
	private static void swap(int[] arr,int i,int j){
		int t=arr[i];
		arr[i]=arr[j];
		arr[j]=t;
	}
}

调用时直接调用SelectionSort.sort(arr)即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值