初識java演算法

2021-09-02 15:13:19 字數 2526 閱讀 9830

引言:這是我對常用演算法的初步理解,如有不足敬請指正,謝謝!

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 演算法,我看還是...