常用的三種演算法

2021-09-26 06:55:42 字數 1436 閱讀 3575

1. 氣泡排序法

氣泡排序的基本思路是對比相鄰的元素值,如果滿足條件就交換元素值,把較小的元素移到陣列前面,把大的元素移到陣列後面,這樣較小的元素就像氣泡一樣上公升到頂部。

冒泡演算法由雙層迴圈實現,其中外層迴圈用於控制迴圈次數,一般為要排序的陣列長度減1次,因為最後一次迴圈只剩下乙個陣列元素,所以不需要對比,同時陣列也完成了排序。而內層迴圈主要用於對比陣列中每個相鄰元素大小,已確定是否交換位置,對比和交換次數隨排序輪數而減少。

實現**:

public

class

arraysort

;for

(int i =

0; i < array.length; i++)}

}}}

2. 直接選擇排序法

直接選擇排序的基本思路是將指定排序位置與其他陣列元素分別對比,如果滿足條件就交換元素值,注意這裡區別氣泡排序,不是交換相鄰元素。而是把滿足條件的元素與指定的排序位置交換,這樣排序好的位置就逐漸擴大,最後整個陣列都已排好序。可以這麼理解,從包含數字1-10的亂序堆中選擇,先找到1放到第一位,然後找到2放到第二位,依次類推,直到找到9放在8的後面,最後剩下10就不用選擇了,直接放到最後就排好了。

與氣泡排序相比,直接選擇排序的交換次數要少很多,所以速度會快一點。

實現**:

public

class

arraysort

;int index;

for(

int i =

1; i < array.length; i++)}

// 交換兩個元素的位置

int item = array[array.length - i]

;// 把第乙個元素值儲存到臨時變數中

array[array.length - i]

= array[index]

;// 把第二種元素值儲存到第乙個單元中

array[index]

= item;

// 把臨時變數(也就是第乙個元素值)儲存到第二個單元中}}

}

3. 反轉排序法

顧名思義,反轉排序就是以相反的順序把原來的陣列內容進行重新排序。反轉排序的基本思路就是把陣列的最後乙個元素與第乙個元素替換,倒數第二個元素和第二個元素替換。以此類推,直到把所有陣列元素都替換了。反轉排序是對陣列兩邊進行替換操作,所以只需要迴圈陣列長度的一半就行了,如果陣列長度為5,那麼迴圈2次就夠了。中間的值不用替換。

實現**:

public

class

arraysort

;int item;

int len = array.length;

for(

int i =

0; i < len /

2; i++)}

}

常用的三種插值演算法

在做數字影象處理時,經常會碰到小數象素座標的取值問題,這時就需要依據鄰近象素的值來對該座標進行插值。比如做影象的幾何校正,也會碰到同樣的問題。這是最簡單的一種插值方法,不需要計算,在待求象素的四鄰象素中,將距離待求象素最近鄰的畫素灰度賦給待求象素。設為待求象素座標 x u,y v 注 x,y為整數,...

三種常用的STL

1 vector容器 vector容器是乙個動態陣列的結構,在記憶體中有乙個指標指向一塊連續的記憶體。類似陣列結構一樣。它的特點支援隨機訪問資料,因為其在記憶體中的單元是連續。如此之外,還可以vector的大小是可以自動增長的。當向乙個vector中繼續存放資料的時候,如果當前的記憶體大小不夠,核心...

三種常用的迴圈

迴圈 一次一次的重複執行相同的 特點 1 迴圈條件規定迴圈的執行次數 如果不規定次數就會無限迴圈 2 迴圈的操作 要執行的相同或顯示的語句 迴圈分為3種,分別是while迴圈,do while 迴圈,for迴圈 迴圈的三要素 1.迴圈變數 2.迴圈條件 滿足時才執行迴圈體 3.迴圈變數的變化 變化是...