排序算法之两路归并排序(Java)
2017-01-18 12:58
274 查看
将2个有序的数组合并为一个有序的数组 时间复杂度为O(nlogn)
默认是按升序进行排序:
默认是按升序进行排序:
public class MergeSort { public static int[] sort(int[] data, int low, int high) { int mid = (low + high) / 2; if (low < high) { sort(data, low, mid); sort(data, mid+1, high); merge(data, low, mid, high); } return data; } public static void merge(int[] data, int left, int mid, int right){ int[] tmp = new int[right - left + 1]; int i = left, j = mid+1, k = 0; while ((i < mid) && (j < right)) { if (data[i] < data[j]) { tmp[k++] = data[i++]; } else { tmp[k++] = data[j++]; } } while (i <= mid){ tmp[k++] = data[i++]; } while (j <= right){ tmp[k++] = data[j++]; } for (int m = 0; m < tmp.length; m++) { data[m + left] = tmp[m]; } } public static void main(String[] args) { int[] data = {-14, 27, 13, 6, 8, 6, 89, 10, 34, 4}; MergeSort.sort(data, 0, data.length-1); } }
相关文章推荐
- 排序算法复习(Java实现)(二): 归并排序,堆排序,桶式排序,基数排序
- 排序算法复习(Java实现)(二): 归并排序,堆排序,桶式排序,基数排序
- 排序算法Java实现(归并排序)
- Java(.NET)经典排序算法之归并排序
- 排序算法之归并排序(JAVA)
- 排序算法复习(Java实现)(二): 归并排序,堆排序,桶式排序,基数排序
- 【排序算法】归并排序(java实现)
- Java排序算法之归并排序
- 排序算法---归并排序 (java)
- 排序算法之归并排序(Java)
- 【转】排序算法复习(Java实现)(二): 归并排序,堆排序,桶式排序,基数排序
- 元素排序几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 排序算法--归并排序(JAVA)
- 排序算法(二)_希尔排序、快速排序、归并排序的Java实现
- 【转】排序算法复习(Java实现) (二): 归并排序,堆排序,桶式排序,基数排序
- 排序算法之归并排序(JAVA)
- 排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序
- 排序算法(1)归并排序(JAVA)
- [学习笔记]Java排序算法之归并排序