经典算法之一《选择排序》

   一直以来,对算法几乎没什么概念,这对于一名程序员来说,几乎是致命的,然而,我似乎没有重视起来,至少之前是没有研究过的。

今天,因为工作松了下来,于是,开始从最基础的算法研究。

   好了,说了这些,我只想说,对于一名程序员来说,算法还是有必要去熟悉一些的。今天研究了两个算法,先说第一个算法--选择排序。

什么是选择排序算法?这似乎是一个算法菜鸟必问的问题。所谓选择算法,其核心是将一个要数列,分为已拍好的序列和未排好的序列。每一次从后端未排序的

序列中选择一个最小的数插到前面已经拍好序的数列后面。如下图:



它的实现如下:

public class SelectionSort {
	
	public static void main(String []arsg){
		
		int a[] = {10,50,30,20,80,90,30,100,30};
		sort(a);
		for(int x:a){
			System.out.println(x);
		}
	}
	
	public static void sort(int array[]){
		for(int i=0;i<array.length;i++){
			int min_index = i;
			for(int j=i+1;j<array.length;j++){//从指定下标的下一个值开始,如果值比指定下标所对于的数组值还要小,就把该下标附给min_index
				if(array[j]<array[min_index]){
					min_index = j;
				}
			}
			
			if(i!=min_index){
				swap(i, min_index, array);//交换下标所对应的值
			}
			
		}
	}
	
	private static void swap(int i,int j,int array[]){//这个只是实现一个简单的交换功能,相信有程序基础的朋友都很容易理解
		int temp = 0;
		temp = array[i];
		array[i] = array[j];
		array[j] = temp;
	}

}
以上就是今天的第一个算法。特此记录!




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值