一直以来,对算法几乎没什么概念,这对于一名程序员来说,几乎是致命的,然而,我似乎没有重视起来,至少之前是没有研究过的。
今天,因为工作松了下来,于是,开始从最基础的算法研究。
好了,说了这些,我只想说,对于一名程序员来说,算法还是有必要去熟悉一些的。今天研究了两个算法,先说第一个算法--选择排序。
什么是选择排序算法?这似乎是一个算法菜鸟必问的问题。所谓选择算法,其核心是将一个要数列,分为已拍好的序列和未排好的序列。每一次从后端未排序的
序列中选择一个最小的数插到前面已经拍好序的数列后面。如下图:
它的实现如下:
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;
}
}
以上就是今天的第一个算法。特此记录!