天天看点

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

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

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

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

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

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

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

它的实现如下:

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;
	}

}
           

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