题目来源: https://www.acwing.com/problem/content/789/
描述:
给定你一个长度为n的整数数列。
请你使用归并排序对这个数列按照从小到大进行排序。
并将排好序的数列按顺序输出。
归并排序的思路:
- 首先确定分界点,归并排序是以中间点划分,mid = left + right >> 1
- 然后递归去划分只有一个的情况
- 然后归并解决,利用双指针:
- i指针指向左半部分最左边,j指针指向右半部分最左边,i = left, r = mid + 1。
- 当i <= mid 并且 j <= right时, 如果q[i] <= q[j] 那么q[i]复制到辅助数组,i++, 否者复制q[j]到辅助数组, j++.
- 必然有一个越界,把越界剩余的部分复制到辅助数组就行
- 然后把排序好的数组再复制回原数组
1 |
|