C:C的排序算法:归并排序(MergeSort)
2018-03-09 14:43
417 查看
#include<stdio.h> typedef struct Array { int key; }Array; #define LENGTH 8 void Merge(Array A[],int low,int mid,int high); void MergeSort(Array A[],int low , int high); int main(void) { int arr[LENGTH] = { 312,214,21,42,3,2325,23,15 }; int index = 1; Array A[LENGTH+1]; while (index<=LENGTH){ A[index].key = arr[index - 1]; printf("排序前:%d\n",A[index].key); index++; } MergeSort(A,1,LENGTH); printf("**************************\n"); index = 1; while (index <= LENGTH) { printf("排序后:%d\n", A[index].key); index++; } return 0; } void Merge(Array A[], int low, int mid, int high) { Array *B = (Array *)malloc((LENGTH) * sizeof(Array)); int i, j, k; for (k = low; k <= high;k++) { B[k] = A[k]; } for (i = low, j = mid + 1, k = i; i <= mid&&j <= high; k++) { if (B[i].key <= B[j].key) { A[k] = B[i++]; } else{ A[k] = B[j++]; } } while (i <= mid) { A[k++] = B[i++]; } while (j <= high) { A[k++] = B[j++]; } } void MergeSort(Array A[], int low, int high) { if (low < high) { int mid = (low + high) / 2; MergeSort(A, low, mid); MergeSort(A, mid+1, high); Merge(A, low, mid,high); } }
相关文章推荐
- 高级排序算法之-归并排序(MERGESORT)
- 使用C#详解常用排序算法(三):归并排序(Merge Sort)
- 排序算法——归并排序(Merge Sort)
- Java排序算法--归并排序(MergeSort)
- 排序算法详解【归并排序-Merge_Sort】
- 排序算法(二)—归并排序(Merge sort)
- 排序算法详解【归并排序-Merge_Sort】
- 排序算法之归并排序(Merge_Sort)
- 排序算法详解【归并排序-Merge_Sort】
- 排序算法总结之归并排序 Merge Sort
- 排序算法详解【归并排序-Merge_Sort】
- 排序算法之归并排序(Mergesort)解析
- 排序算法——归并排序(Merge Sort)
- 排序算法详解【归并排序-Merge_Sort】
- 排序算法之归并排序(Mergesort)解析
- 排序算法详解【归并排序-Merge_Sort】
- 排序算法详解【归并排序-Merge_Sort】
- 排序算法详解【归并排序-Merge_Sort】
- 排序算法--归并排序(MergeSort)
- 排序算法详解【归并排序-Merge_Sort】