六大java語言經(jīng)典算法

六大java語言經(jīng)典算法

長沙牛耳教育      2022-03-25 00:20:02     4

六大java語言經(jīng)典算法,在程序員們進行編程的時候,對各種數(shù)據(jù)的處理是少不了的,java語言算法在這個時候就十分重要了。數(shù)據(jù)算法有很多種,也并不區(qū)分哪

課程價格 請咨詢

上課時段: 授課校區(qū):

詳細介紹

在程序員們進行編程的時候,對各種數(shù)據(jù)的處理是少不了的,java語言算法在這個時候就十分重要了。數(shù)據(jù)算法有很多種,也并不區(qū)分哪種計算機語言使用,但是有程序員們常用的java語言經(jīng)典算法,下面就簡單介紹一下六大經(jīng)典java語言算法。

一、冒泡排序(Bubble Sort)

1、基本思想:兩個數(shù)比較大小,較大的數(shù)下沉,較小的數(shù)冒起來。

2、算法描述:

(1)比較相鄰的元素。如果第一個比第二個大,就交換它們兩個;

(2)對每一對相鄰元素作同樣的工作,從開始第一對到結(jié)尾的最后一對,這樣在最后的元素應(yīng)該會是最大的數(shù);

(3)針對所有的元素重復(fù)以上的步驟,除了最后一個;

(4)重復(fù)步驟1~3,直到排序完成。

3、代碼實現(xiàn):

二、選擇排序(Selection Sort)

1、基本思想:選擇排序(Selection-sort)是一種簡單直觀的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再從剩余未排序元素中繼續(xù)尋找最小(大)元素,然后放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。

2、算法描述:(n個記錄的直接選擇排序可經(jīng)過n-1趟直接選擇排序得到有序結(jié)果。)

(1)初始狀態(tài):無序區(qū)為R[1..n],有序區(qū)為空;

(2)第i趟排序(i=1,2,3…n-1)開始時,當(dāng)前有序區(qū)和無序區(qū)分別為R[1..i-1]和R(i..n)。該趟排序從當(dāng)前無序區(qū)中-選出關(guān)鍵字最小的記錄 R[k],將它與無序區(qū)的第1個記錄R交換,使R[1..i]和R[i+1..n)分別變?yōu)橛涗泜€數(shù)增加1個的新有序區(qū)和記錄個數(shù)減少1個的新無序區(qū);

(3)n-1趟結(jié)束,數(shù)組有序化了。

3、代碼實現(xiàn):

三、插入排序(Insertion Sort)

1、基本思想:在要排序的一組數(shù)中,假定前n-1個數(shù)已經(jīng)排好序,現(xiàn)在將第n個數(shù)插到前面的有序數(shù)列中,使得這n個數(shù)也是排好順序的。如此反復(fù)循環(huán),直到全部排好順序。

2、算法描述:

(1)從第一個元素開始,該元素可以認為已經(jīng)被排序;

(2)取出下一個元素,在已經(jīng)排序的元素序列中從后向前掃描;

(3)如果該元素(已排序)大于新元素,將該元素移到下一位置;

(4)重復(fù)步驟3,直到找到已排序的元素小于或者等于新元素的位置;

(5)將新元素插入到該位置后;

(6)重復(fù)步驟2~5。

3、代碼實現(xiàn):

四、希爾排序(Shell Sort)

1、基本思想:希爾排序也是一種插入排序,它是簡單插入排序經(jīng)過改進之后的一個更高效的版本,也稱為縮小增量排序,同時該算法是沖破O(n2)的第一批算法之一。它與插入排序的不同之處在于,它會優(yōu)先比較距離較遠的元素。

2、算法描述:

(1)選擇一個增量序列t1,t2,…,tk,其中ti>tj,tk=1;

(2)按增量序列個數(shù)k,對序列進行k 趟排序;

(3)每趟排序,根據(jù)對應(yīng)的增量ti,將待排序列分割成若干長度為m 的子序列,分別對各子表進行直接插入排序。僅增量因子為1 時,整個序列作為一個表來處理,表長度即為整個序列的長度。

3、代碼實現(xiàn):

五、歸并排序(Merge Sort)

1、基本思想:歸并排序是建立在歸并操作上的一種有效的排序算法。該算法是采用分治法(Divide and Conquer)的一個非常典型的應(yīng)用。將已有序的子序列合并,得到完全有序的序列;即先使每個子序列有序,再使子序列段間有序。若將兩個有序表合并成一個有序表,稱為2-路歸并。

2、算法描述:

(1)把長度為n的輸入序列分成兩個長度為n/2的子序列;

(2)對這兩個子序列分別采用歸并排序;

(3)將兩個排序好的子序列合并成一個最終的排序序列。

3、代碼實現(xiàn):

六、快速排序(Quick Sort)

1、基本思想(分治):

通過一趟排序?qū)⒋庞涗浄指舫瑟毩⒌膬刹糠?,其中一部分記錄的關(guān)鍵字均比另一部分的關(guān)鍵字小,則可分別對這兩部分記錄繼續(xù)進行排序,以達到整個序列有序。

2、算法描述:快速排序使用分治法來把一個串(list)分為兩個子串(sub-lists)。具體算法描述如下:

(1)從數(shù)列中挑出一個元素,稱為“基準(zhǔn)”(pivot);

(2)重新排序數(shù)列,所有元素比基準(zhǔn)值小的擺放在基準(zhǔn)前面,所有元素比基準(zhǔn)值大的擺在基準(zhǔn)的后面(相同的數(shù)可以到任一邊)。在這個分區(qū)退出之后,該基準(zhǔn)就處于數(shù)列的中間位置。這個稱為分區(qū)(partition)操作;

(3)遞歸地(recursive)把小于基準(zhǔn)值元素的子數(shù)列和大于基準(zhǔn)值元素的子數(shù)列排序。

3、代碼實現(xiàn):

上面這六種java經(jīng)典算法是大家學(xué)習(xí)java必須要掌握的,也是新手朋友們在java零基礎(chǔ)教程中會學(xué)到的內(nèi)容。希望通過這篇文章對六種java語言經(jīng)典算法的介紹,可以幫助到大家,尤其是對新手朋友能夠有所幫助,對常用的java算法有一定的認識和了解。

培訓(xùn)啦提醒您:交易時請核實對方資質(zhì),對于過大宣傳或承諾需謹慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險,謹防上當(dāng)。