1. update code and md format
2. update PrintUtil.h format
This commit is contained in:
parent
73815e751c
commit
aa8f460c36
@ -11,43 +11,36 @@
|
|||||||
* 左子数组区间 [left, mid]
|
* 左子数组区间 [left, mid]
|
||||||
* 右子数组区间 [mid + 1, right]
|
* 右子数组区间 [mid + 1, right]
|
||||||
*/
|
*/
|
||||||
void merge(int arr[], int left, int mid, int right)
|
void merge(int nums[], int left, int mid, int right) {
|
||||||
{
|
// 开辟一个新的数组,将原数组数据片段存进去
|
||||||
int aux[right - left + 1]; // 开辟一个新的数组,将原数组数据片段存进去
|
int tmp[right - left + 1];
|
||||||
for (int m = left; m <= right; m++)
|
for (int m = left; m <= right; m++) {
|
||||||
{
|
tmp[m - left] = nums[m];
|
||||||
aux[m - left] = arr[m];
|
|
||||||
}
|
}
|
||||||
|
// i和j分别指向两个数组开头部分
|
||||||
int i = left, j = mid + 1; // i和j分别指向两个数组开头部分
|
int i = left, j = mid + 1;
|
||||||
|
// 通过覆盖原数组 nums 来合并左子数组和右子数组
|
||||||
for (int k = left; k <= right; k++)
|
for (int k = left; k <= right; k++) {
|
||||||
{
|
if (i > mid) {
|
||||||
if (i > mid)
|
nums[k] = tmp[j - left];
|
||||||
{
|
|
||||||
arr[k] = aux[j - left];
|
|
||||||
j++;
|
j++;
|
||||||
}
|
}
|
||||||
else if (j > right)
|
else if (j > right) {
|
||||||
{
|
nums[k] = tmp[i - left];
|
||||||
arr[k] = aux[i - left];
|
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
else if (aux[i - left] < aux[j - left])
|
else if (tmp[i - left] < tmp[j - left]) {
|
||||||
{
|
nums[k] = tmp[i - left];
|
||||||
arr[k] = aux[i - left];
|
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
nums[k] = tmp[j - left];
|
||||||
arr[k] = aux[j - left];
|
|
||||||
j++;
|
j++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void mergeSort(int nums[], int left, int right)
|
void mergeSort(int nums[], int left, int right) {
|
||||||
{
|
|
||||||
// 终止条件
|
// 终止条件
|
||||||
if (left >= right)
|
if (left >= right)
|
||||||
return; // 当子数组长度为 1 时终止递归
|
return; // 当子数组长度为 1 时终止递归
|
||||||
@ -60,13 +53,12 @@ void mergeSort(int nums[], int left, int right)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Driver Code */
|
/* Driver Code */
|
||||||
int main()
|
int main() {
|
||||||
{
|
|
||||||
/* 归并排序 */
|
/* 归并排序 */
|
||||||
int nums[8] = {7, 3, 2, 6, 0, 1, 5, 4};
|
int nums[8] = {7, 3, 2, 6, 0, 1, 5, 4};
|
||||||
|
|
||||||
mergeSort(nums, 0, 7);
|
mergeSort(nums, 0, 7);
|
||||||
|
printf("归并排序完成后 nums = ");
|
||||||
printArray(nums, 8);
|
printArray(nums, 8);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -14,10 +14,9 @@
|
|||||||
/**
|
/**
|
||||||
* @brief Print an Array
|
* @brief Print an Array
|
||||||
*
|
*
|
||||||
* @param arr
|
* @param arr array
|
||||||
* @param n
|
* @param n array length
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static void printArray(int* arr, int n)
|
static void printArray(int* arr, int n)
|
||||||
{
|
{
|
||||||
printf("[");
|
printf("[");
|
||||||
|
@ -342,43 +342,36 @@ comments: true
|
|||||||
* 左子数组区间 [left, mid]
|
* 左子数组区间 [left, mid]
|
||||||
* 右子数组区间 [mid + 1, right]
|
* 右子数组区间 [mid + 1, right]
|
||||||
*/
|
*/
|
||||||
void merge(int arr[], int left, int mid, int right)
|
void merge(int nums[], int left, int mid, int right) {
|
||||||
{
|
// 开辟一个新的数组,将原数组数据片段存进去
|
||||||
int aux[right - left + 1]; // 开辟一个新的数组,将原数组数据片段存进去
|
int tmp[right - left + 1];
|
||||||
for (int m = left; m <= right; m++)
|
for (int m = left; m <= right; m++) {
|
||||||
{
|
tmp[m - left] = nums[m];
|
||||||
aux[m - left] = arr[m];
|
|
||||||
}
|
}
|
||||||
|
// i和j分别指向两个数组开头部分
|
||||||
int i = left, j = mid + 1; // i和j分别指向两个数组开头部分
|
int i = left, j = mid + 1;
|
||||||
|
// 通过覆盖原数组 nums 来合并左子数组和右子数组
|
||||||
for (int k = left; k <= right; k++)
|
for (int k = left; k <= right; k++) {
|
||||||
{
|
if (i > mid) {
|
||||||
if (i > mid)
|
nums[k] = tmp[j - left];
|
||||||
{
|
|
||||||
arr[k] = aux[j - left];
|
|
||||||
j++;
|
j++;
|
||||||
}
|
}
|
||||||
else if (j > right)
|
else if (j > right) {
|
||||||
{
|
nums[k] = tmp[i - left];
|
||||||
arr[k] = aux[i - left];
|
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
else if (aux[i - left] < aux[j - left])
|
else if (tmp[i - left] < tmp[j - left]) {
|
||||||
{
|
nums[k] = tmp[i - left];
|
||||||
arr[k] = aux[i - left];
|
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
nums[k] = tmp[j - left];
|
||||||
arr[k] = aux[j - left];
|
|
||||||
j++;
|
j++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void mergeSort(int nums[], int left, int right)
|
void mergeSort(int nums[], int left, int right) {
|
||||||
{
|
|
||||||
// 终止条件
|
// 终止条件
|
||||||
if (left >= right)
|
if (left >= right)
|
||||||
return; // 当子数组长度为 1 时终止递归
|
return; // 当子数组长度为 1 时终止递归
|
||||||
|
Loading…
Reference in New Issue
Block a user