引言:這是我對常用演算法的初步理解,如有不足敬請指正,謝謝!
1.【選擇排序法】
初始陣列 【63 4 24 1 3 15 】
第一次排序 【4 24 1 3 15 】 63
第二次排序 【4 1 3 15 】 24 63
第三次排序 【4 1 3 】 15 24 63
第四次排序 【1 3 】 4 15 24 63
第五次排序 【1 】 3 4 15 24 63
特點:每一次從待排序的資料中選出最小(或最大)的乙個元素,順序放到已經排好序的數列最後,直達全部排完!
使用:如果陣列有重複值,可選擇該排序方法,因為遇到重複相等的值不會做任何處理,如果程式允許重複,該方法資料交換次數少,效率高!
程式:private int array = new int[10];
protected void do_button_actionperformed()
}//核心演算法
protected void do_button_1_actionperformed()
}// 交換在位置array.length-i和index(最大值)兩個數
int temp = array[array.length - i];
array[array.length - i] = array[index];
array[index] = temp;}}
2.【氣泡排序】
定義:基本思想是對比相鄰的元素值,如果滿足條件就交換元素,把較小的移動到前面,這樣陣列就像氣泡一樣從底部上公升到頂部。
特點:比較的次數依排序輪數遞減,因為每次都會確定乙個最大值!
程式:private int array = new int[10];
protected void do_button_actionperformed(actionevent e)
} //核心演算法
protected void do_button_1_actionperformed(actionevent e) }}
3.【快速排序】
定義:對氣泡排序的一種改進,基本思想,通過一趟排序把要排序的資料分成2部分,其中一部分比參考數(通常選取每個部分的第1個數)小的,另一部分都是比參考數大的,對每個部分進行遞迴處理,直到每個部分只有乙個元素即完成排序.
例子:初始陣列: 49 38 65 97 76 13 27 49
第一次排序: {27 38 13} 49{76 97 65 49}
對左邊序列排序: {13}27{38} 49{76 97 65 49}
對右邊排序: {65 49}76{97}
對右邊繼續排序: {49}65
完成排序的序列: {13}27{38}49 49}65 76{97}
核心演算法:
private int array = new int[10];
protected void do_button_actionperformed(actionevent e)
} //呼叫快速排序的方法,傳入初始引數
protected void do_button_1_actionperformed(actionevent e)
//快速排序的邏輯排序相對複雜一些
private void quicksort(int sortarray, int lowindex, int highindex)
}if (lowindex < hi)// 遞迴排序沒有未分解元素
quicksort(sortarray, lowindex, hi);
if (lo < highindex)// 遞迴排序沒有未分解元素
quicksort(sortarray, lo, highindex);
}}
private void swap(int swaparray, int i, int j)
4.【直接插入排序】
定義: 將乙個記錄插入到有序數列中,使得到的新數列依然有序,插入乙個新的元素會使得元素後面的數字向後移動一位.
例子:2,8,7,5,9,6
獲取第乙個元素: 2{ 8,7,5,9,6}
依次插入後面的元素: 2,8{ 7,5,9,6}
依次插入後面的元素: 2,7,8{ 5,9,6}
依次插入後面的元素: 2,5,7,8{ 9,6}
依次插入後面的元素: 2,5,7,8 ,9{6}
依次插入後面的元素: 2,5,6,7,8 ,9
核心演算法:
private int array = new int[10];
protected void do_button_actionperformed(actionevent e)
}protected void do_button_1_actionperformed(actionevent e)
array[j + 1] = tmp;// 在排序位置插入資料}}
初識A 演算法
初識a 演算法 sunway 目 錄 1 何謂啟發式搜尋演算法 2 初識a 演算法 寫這篇文章的初衷是應乙個的要求,當然我也發現現在有關人工智慧的中文站點實在太少,我在這裡拋磚引玉,希望大家都來熱心的參與。還是說正題,我 先拿a 演算法開刀,是因為a 在遊戲中有它很典型的用法,是人工智慧在遊戲中的代...
初識A 演算法
寫這篇文章的初衷是應乙個的要求,當然我也發現現在有關人工智慧的中文站點實在太少,我在這裡拋磚引玉,希望大家都來熱心的參與。還是說正題,我先拿a 演算法開刀,是因為a 在遊戲中有它很典型的用法,是人工智慧在遊戲中的代表。a 演算法在人工智慧中是一種典型的啟發式搜尋演算法,為了說清楚a 演算法,我看還是...
初識A 演算法
寫這篇文章的初衷是應乙個的要求,當然我也發現現在有關人工智慧的中文站點實在太少,我在這裡拋磚引玉,希望大家都來熱心的參與。還是說正題,我先拿a 演算法開刀,是因為a 在遊戲中有它很典型的用法,是人工智慧在遊戲中的代表。a 演算法在人工智慧中是一種典型的啟發式搜尋演算法,為了說清楚a 演算法,我看還是...