归并排序学习
**归并排序代码**
//mergeSort #include<stdio.h> #include<stdlib.h> //合并 void merge_Sort(int arr[], int L, int M, int R) { int left_size = M - L; int right_size = R - M+1; int* left = (int*)malloc(sizeof(int) * left_size); int* right = (int*)malloc(sizeof(int) * right_size); for (int i = L; i < M; i++) { left[i - L] = arr[i]; } for (int i = M;i <= R; i++) { right[i - M] = arr[i]; } //合并 int i = 0, j = 0, k = L; while (i < left_size && j < right_size) { if (left[i] < right[j]) { arr[k] = left[i]; k++; i++; } else { arr[k] = right[j]; k++; j++; } } while (i < left_size) { arr[k] = left[i]; k++; i++; } while (j < right_size) { arr[k] = right[j]; k++; j++; } } //分而治之 void MergeSort(int arr[], int L, int R) { if (L == R) return; else { int M = (L + R) / 2; MergeSort(arr, L, M); MergeSort(arr, M + 1, R); merge_Sort(arr, L, M + 1, R); } } //输出数组 void display(int arr[],int n) { for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } } //主函数 int main(void) { int num[] = {6,8,10,9,4,5,2,7 }; int L = 0; int R = 7; MergeSort(num, L, R); for (int i = 0; i <= 7; i++) printf("%d ", num[i]); }
计算机小白记录学习过程,喜欢就点个推荐和关注吧O(∩_∩)O哈哈~

浙公网安备 33010602011771号