Java基礎之排序演算法

2021-09-14 06:57:39 字數 3573 閱讀 4418

package stringlei;

/**@author shishuai e-mail:[email protected]

*@version create time : 2023年4月1日下午4:09:04

*類說明:氣泡排序演算法

氣泡排序演算法的運作如下:(從後往前)

比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。

對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。

針對所有的元素重複以上的步驟,除了最後乙個。

持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

相同元素的前後順序並沒有改變,所以氣泡排序是一種穩定排序演算法。

*/public

class

paixu

;//外迴圈控制輪數

//比較輪數等於數列的長度

for(

int i =

0; i < nums.length -

1; i++)}

}for

(int n : nums)}}

/*34 4 56 17 90 65

* //比較次數

*4 34 17 56 65 90 //第一輪 5次

*4 17 34 56 65 //第二輪 4次

*4 17 34 56 //第三輪 3次

*4 17 34 //第四輪 2次

*4 17 //第五輪 1次

*@version create time : 2023年4月1日下午4:09:04

*類說明:選擇排序演算法

每一趟從待排序的資料元素中選出最小(或最大)的乙個元素,

順序放在已排好序的數列的最後,直到全部待排序的資料元素排完。

選擇排序是不穩定的排序方法。

*/public class paixu ;

int minindex = 0;//用於記錄每次比較的最小值下標

//控制輪數

for(int i = 0; i < nums.length - 1; i++)

}//判斷需要交換的數下標是否為自己

if(minindex != i)

} //輸出結果

for(int n : nums) }}

/*34 4 56 17 90 65

* *4 34 56 17 90 65 第一輪 比較5次

*4 17 56 34 90 65 第二輪 比較4次

*4 17 34 56 90 65 第三輪 比較3次

*4 17 34 56 90 65 第四輪 比較2次

*4 17 34 56 65 90 第五輪 比較1次

基本思想:每步將乙個待排序的記錄,按其順序碼大小插入到前面已經排序的子串行的合適位置(從後向前找到

合適位置後),直到全部插入排序完為止。

*@version create time : 2023年4月1日下午4:09:04

*類說明:直接插入排序演算法

(從後向前找到合適位置後插入)

基本思想:每步將乙個待排序的記錄,

按其順序碼大小插入到前面已經排序的子串行的合適位置(前邊的肯定是排好的)

(從後向前找到合適位置後),直到全部插入排序完為止。

*/public

class

paixu

;//控制比較的輪數

for(

int i =

1; i < nums.length; i++

)else}if

(nums[j +1]

!= temp)

}//輸出結果

二分法查詢(折半查詢):

*前提是在已經排好序的陣列中,

*通過將待查詢的元素與中間索引值對應的元素進行比較,

*若大於中間索引值對應的元素,

*去右半部分查詢,否則,去左半部分查詢。

*依此類推。直到找到為止;找不到返回乙個負數。

package stringlei;

/**@author shishuai e-mail:[email protected]

*@version create time : 2023年4月1日下午4:09:04

*類說明:二分法查詢(折半查詢):

*前提是在已經排好序的陣列中,

*通過將待查詢的元素與中間索引值對應的元素進行比較,

*若大於中間索引值對應的元素,

*去右半部分查詢,否則,去左半部分查詢。

*依此類推。直到找到為止;找不到返回乙個負數。

*/public

class

paixu

;int index =

binarysearch

(num,88)

; system.out.

println

(index);}

//二分查詢演算法

《基礎演算法之排序》 1 氣泡排序 java實現

所謂氣泡排序,就是將較大的泡 數 不斷往上冒 1 從第乙個位置開始,比較當前位置與下乙個位置值的大小,如果前乙個位置大於後乙個位置,則交換位置,並繼續向後遍歷 2 上一次遍歷完成,即得到最大的元素,並將其交換位置到了最後一位 3 接下來從第乙個位置開始,再重新選出 0,n 2 位置的最大數,放到n ...

《基礎演算法之排序》 7 桶排序 java實現

桶排序的基本思路是 第一步 先獲取陣列中的最大和最小值,來得到桶的個數 第二步 然後遍歷陣列,將陣列中的值插入到桶中,陣列的值為桶的index 此桶的值0為這表示該位置沒有值,為1則表示有乙個值,為n的時候表示有多個值 第三步 重新遍歷桶,如果當前index對應的值不為0,則表示有值,放到arr陣列...

《基礎演算法之排序》 4 堆排序 java實現

對於堆排序,首先要了解堆的概念,堆分為大頂堆和小頂堆。顧名思義,大頂堆的堆頂元素為整個堆的最大值 小頂堆的堆頂元素為整個堆的最小值。對於本題的堆排序,採用的是大頂堆。堆排序主要分為兩部分,建堆和調整堆。建堆的過程就是遍歷要排序的陣列中的每乙個元素,然後依次放入大頂堆,並比較大小,找到每個元素的位置,...