java 基本算法之歸并排序?qū)嵗a
java 基本算法之歸并排序?qū)嵗a
原理:歸并(Merge)排序法是將兩個(gè)(或兩個(gè)以上)有序表合并成一個(gè)新的有序表,
* 即把待排序序列分為若干個(gè)子序列,每個(gè)子序列是有序的。
* 然后再把有序子序列合并為整體有序序列。
實(shí)例代碼:
public class MergeSort {
/**
*
*
*
* @param args
*/
public static void main(String[] args) {
int a[] = { 49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 5, 4, 62,
99, 98, 54, 56, 17, 18, 23, 34, 15, 35, 25, 53, 51 };
sort(a, 0, a.length - 1);
System.out.println(Arrays.toString(a));
}
public static void sort(int[] data, int left, int right) {
if (left < right) {
// 找出中間索引
int center = (left + right) / 2;
// 對(duì)左邊數(shù)組進(jìn)行遞歸
sort(data, left, center);
// 對(duì)右邊數(shù)組進(jìn)行遞歸
sort(data, center + 1, right);
// 合并
merge(data, left, center, right);
}
}
public static void merge(int[] data, int left, int center, int right) {
int[] tmpArr = new int[data.length];
int mid = center + 1;
// third記錄中間數(shù)組的索引
int third = left;
int tmp = left;
while (left <= center && mid <= right) {
// 從兩個(gè)數(shù)組中取出最小的放入中間數(shù)組
if (data[left] <= data[mid]) {
tmpArr[third++] = data[left++];
} else {
tmpArr[third++] = data[mid++];
}
}
// 剩余部分依次放入中間數(shù)組
while (left <= center) {
tmpArr[third++] = data[left++];
}
while (mid <= right) {
tmpArr[third++] = data[mid++];
}
// 將中間數(shù)組中的內(nèi)容復(fù)制回原數(shù)組
while (tmp <= right) {
data[tmp] = tmpArr[tmp++];
}
System.out.println(Arrays.toString(data));
}
}
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
了解java中對(duì)象基礎(chǔ)Object類(lèi)
本文主要講解了java中對(duì)象基礎(chǔ)Object類(lèi),文中運(yùn)用大量代碼講解的非常詳細(xì),想學(xué)習(xí)相關(guān)知識(shí)的小伙伴可以參考一下這篇文章2021-09-09
Java數(shù)組轉(zhuǎn)List及Stream的基本方法使用方法
Java?的?Stream?流操作是一種簡(jiǎn)潔而強(qiáng)大的處理集合數(shù)據(jù)的方式,允許對(duì)數(shù)據(jù)進(jìn)行高效的操作,如過(guò)濾、映射、排序和聚合,這篇文章主要介紹了Java數(shù)組轉(zhuǎn)List及Stream的基本方法使用教程,需要的朋友可以參考下2024-08-08
淺析Spring boot 中 logback 配置<springPropert
這篇文章主要介紹了淺析Spring boot 中 logback 配置<springProperty> 讀取application.properties 中的屬性,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02
關(guān)于ResponseEntity類(lèi)和HttpEntity及跨平臺(tái)路徑問(wèn)題
這篇文章主要介紹了關(guān)于ResponseEntity類(lèi)和HttpEntity及跨平臺(tái)路徑問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
深入了解Springboot核心知識(shí)點(diǎn)之?dāng)?shù)據(jù)訪(fǎng)問(wèn)配置
這篇文章主要為大家介紹了Springboot核心知識(shí)點(diǎn)中的數(shù)據(jù)訪(fǎng)問(wèn)配置,文中的示例代碼講解詳細(xì),對(duì)我們了解SpringBoot有一定幫助,快跟隨小編一起學(xué)習(xí)一下吧2021-12-12

