更新時間:2020-10-10 17:23:00 來源:動力節點 瀏覽5700次
在程序員們進行編程的時候,對各種數據的處理是少不了的,java語言算法在這個時候就十分重要了。數據算法有很多種,也并不區分哪種計算機語言使用,但是有程序員們常用的java語言經典算法,下面就簡單介紹一下六大經典java語言算法。
1、基本思想:兩個數比較大小,較大的數下沉,較小的數冒起來。
2、算法描述:
(1)比較相鄰的元素。如果第一個比第二個大,就交換它們兩個;
(2)對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最后一對,這樣在最后的元素應該會是最大的數;
(3)針對所有的元素重復以上的步驟,除了最后一個;
(4)重復步驟1~3,直到排序完成。
3、代碼實現:
1、基本思想:選擇排序(Selection-sort)是一種簡單直觀的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再從剩余未排序元素中繼續尋找最小(大)元素,然后放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。
2、算法描述:(n個記錄的直接選擇排序可經過n-1趟直接選擇排序得到有序結果。)
(1)初始狀態:無序區為R[1..n],有序區為空;
(2)第i趟排序(i=1,2,3…n-1)開始時,當前有序區和無序區分別為R[1..i-1]和R(i..n)。該趟排序從當前無序區中-選出關鍵字最小的記錄 R[k],將它與無序區的第1個記錄R交換,使R[1..i]和R[i+1..n)分別變為記錄個數增加1個的新有序區和記錄個數減少1個的新無序區;
(3)n-1趟結束,數組有序化了。
3、代碼實現:
1、基本思想:在要排序的一組數中,假定前n-1個數已經排好序,現在將第n個數插到前面的有序數列中,使得這n個數也是排好順序的。如此反復循環,直到全部排好順序。
2、算法描述:
(1)從第一個元素開始,該元素可以認為已經被排序;
(2)取出下一個元素,在已經排序的元素序列中從后向前掃描;
(3)如果該元素(已排序)大于新元素,將該元素移到下一位置;
(4)重復步驟3,直到找到已排序的元素小于或者等于新元素的位置;
(5)將新元素插入到該位置后;
(6)重復步驟2~5。
3、代碼實現:
1、基本思想:希爾排序也是一種插入排序,它是簡單插入排序經過改進之后的一個更高效的版本,也稱為縮小增量排序,同時該算法是沖破O(n2)的第一批算法之一。它與插入排序的不同之處在于,它會優先比較距離較遠的元素。
2、算法描述:
(1)選擇一個增量序列t1,t2,…,tk,其中ti>tj,tk=1;
(2)按增量序列個數k,對序列進行k 趟排序;
(3)每趟排序,根據對應的增量ti,將待排序列分割成若干長度為m 的子序列,分別對各子表進行直接插入排序。僅增量因子為1 時,整個序列作為一個表來處理,表長度即為整個序列的長度。
3、代碼實現:
1、基本思想:歸并排序是建立在歸并操作上的一種有效的排序算法。該算法是采用分治法(Divide and Conquer)的一個非常典型的應用。將已有序的子序列合并,得到完全有序的序列;即先使每個子序列有序,再使子序列段間有序。若將兩個有序表合并成一個有序表,稱為2-路歸并。
2、算法描述:
(1)把長度為n的輸入序列分成兩個長度為n/2的子序列;
(2)對這兩個子序列分別采用歸并排序;
(3)將兩個排序好的子序列合并成一個最終的排序序列。
3、代碼實現:
1、基本思想(分治):
通過一趟排序將待排記錄分隔成獨立的兩部分,其中一部分記錄的關鍵字均比另一部分的關鍵字小,則可分別對這兩部分記錄繼續進行排序,以達到整個序列有序。
2、算法描述:快速排序使用分治法來把一個串(list)分為兩個子串(sub-lists)。具體算法描述如下:
(1)從數列中挑出一個元素,稱為“基準”(pivot);
(2)重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的后面(相同的數可以到任一邊)。在這個分區退出之后,該基準就處于數列的中間位置。這個稱為分區(partition)操作;
(3)遞歸地(recursive)把小于基準值元素的子數列和大于基準值元素的子數列排序。
3、代碼實現:
上面這六種java經典算法是大家學習java必須要掌握的,也是新手朋友們在java零基礎教程中會學到的內容。希望通過這篇文章對六種java語言經典算法的介紹,可以幫助到大家,尤其是對新手朋友能夠有所幫助,對常用的java算法有一定的認識和了解。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習