一直以來,對算法幾乎沒什麼概念,這對于一名程式員來說,幾乎是緻命的,然而,我似乎沒有重視起來,至少之前是沒有研究過的。
今天,因為工作松了下來,于是,開始從最基礎的算法研究。
好了,說了這些,我隻想說,對于一名程式員來說,算法還是有必要去熟悉一些的。今天研究了兩個算法,先說第一個算法--選擇排序。
什麼是選擇排序算法?這似乎是一個算法菜鳥必問的問題。所謂選擇算法,其核心是将一個要數列,分為已拍好的序列和未排好的序列。每一次從後端未排序的
序列中選擇一個最小的數插到前面已經拍好序的數列後面。如下圖:

它的實作如下:
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;
}
}
以上就是今天的第一個算法。特此記錄!