【基础算法】排序-复杂排序之一(归并排序的两种优化讨论)

来源:互联网 发布:冰种翡翠手镯价格知乎 编辑:程序博客网 时间:2024/04/29 21:29

优化讨论一:

因为mergesort在数组元素比较少的时候开销较大,所以第一种优化即考虑当元素被分割成少于7个元素的时候,直接采用插入排序来解决.

if (left + 6 >= right) {InsertionSort.insertionSort(array);return;} else {int middle = (left + right) / 2;mergeSort(array, left, middle);mergeSort(array, middle + 1, right);if (more(array[middle + 1], array[middle]))return;merge(array, left, middle, right);}}



优化讨论二:

当mid指针的元素小于mid+1指针的时候,说明这两个数组已经排好序,所以就可以跳过merge这一步,直接return就可以了。

if (left == right)return;else {int middle = (left + right) / 2;mergeSort(array, left, middle);mergeSort(array, middle + 1, right);if(more(array[middle+1], array[middle]))return;merge(array, left, middle, right);}


0 0
原创粉丝点击