归并排序(Merge-Sort)
来源:互联网 发布:网络直播app 哪个好 编辑:程序博客网 时间:2024/06/06 04:41
归并排序(Merge-Sort)
归并排序是一种比插入排序更加高效的排序算法,尤其是规模较大的时候,其时间复杂度为O(nlgn)而插入排序为O(n²),下面给出数组的归并排序的Java实现代码
/** * Created by CvShrimp on 2017/9/26. */public class MergeSort { public static void mergeSort(int[] array, int startIndex, int endIndex) { if(startIndex >= endIndex) return; int midIndex = (startIndex + endIndex) / 2; //使用分治法,每次把待排序的数组分成两部分 mergeSort(array, startIndex, midIndex); mergeSort(array, midIndex + 1, endIndex); merge(array, startIndex, midIndex , endIndex); } public static void merge(int[] array, int startIndex, int midIndex, int endIndex) { int i = startIndex; int j = midIndex + 1; int[] tempArray = new int[endIndex - startIndex + 1]; int tempIndex = 0; while (i <= midIndex && j <= endIndex) { if(array[i] <= array[j]) { tempArray[tempIndex] = array[i]; i++; tempIndex++; }else { tempArray[tempIndex] = array[j]; j++; tempIndex++; } } while (i <= midIndex) { tempArray[tempIndex] = array[i]; i++; tempIndex++; } while (j <= endIndex) { tempArray[tempIndex] = array[j]; j++; tempIndex++; } for(int k = 0; k < tempArray.length; k++) { array[startIndex + k] = tempArray[k]; } } public static void main(String[] args) { int[] array = {1,5,7,8,9,2,0,6,16,12}; mergeSort(array, 0, array.length - 1); System.out.print("Sorted result: "); for(int single : array) { System.out.print(single + " "); } System.out.println(); }}
阅读全文
0 0
- 归并排序(merge sort)
- 归并排序(merge sort)
- 归并排序(merge sort)
- 归并排序(Merge Sort)
- 归并排序(merge sort)
- 归并排序(merge sort)
- Merge Sort (归并排序)
- 归并排序(Merge sort)
- 归并排序(Merge sort)
- 归并排序(Merge Sort)
- 归并排序(Merge Sort)
- 归并排序(Merge Sort)
- 归并排序(Merge Sort)
- 归并排序(Merge Sort)
- 归并排序(MERGE-SORT)
- 归并排序(Merge Sort)
- 归并排序(Merge Sort)
- 归并排序(Merge Sort)
- MFC更改图标
- 折半查找
- (HDU
- Redis初体验
- 李超线段树
- 归并排序(Merge-Sort)
- keil出现warning Deprecateddeclaration/函数/
- Python中列表的索引的一个特殊用法
- C++primer第二章笔记
- 程序员的自我修养九Windows下的动态链接
- android之图片压缩
- 计蒜客之爬楼梯
- python爬虫之baidu贴吧
- CvMat,Mat和IplImage之间的转化和拷贝