当前位置:   article > 正文

归并排序 C语言实现_归并排序c语言代码

归并排序c语言代码

1. 归并排序(排序的方法一种,速度比选择排序、插入排序等快很多)适合较多数据排序 

2. 归并排序思想(拆分、合并)

2.1 拆分

2.2 合并 

2.2 合并详解

3. c语言代码实现 

  1. #include<stdio.h>
  2. #define ArrLen 20
  3. void printList(int arr[], int len) {
  4. int i;
  5. for (i = 0; i < len; i++) {
  6. printf("%d\t", arr[i]);
  7. }
  8. }
  9. void merge(int arr[], int start, int mid, int end) {
  10. int result[ArrLen];
  11. int k = 0;
  12. int i = start;
  13. int j = mid + 1;
  14. while (i <= mid && j <= end) {
  15. if (arr[i] < arr[j]){
  16. result[k++] = arr[i++];
  17. }
  18. else{
  19. result[k++] = arr[j++];
  20. }
  21. }
  22. if (i == mid + 1) {
  23. while(j <= end)
  24. result[k++] = arr[j++];
  25. }
  26. if (j == end + 1) {
  27. while (i <= mid)
  28. result[k++] = arr[i++];
  29. }
  30. for (j = 0, i = start ; j < k; i++, j++) {
  31. arr[i] = result[j];
  32. }
  33. }
  34. void mergeSort(int arr[], int start, int end) {
  35. if (start >= end)
  36. return;
  37. int mid = ( start + end ) / 2;
  38. mergeSort(arr, start, mid);
  39. mergeSort(arr, mid + 1, end);
  40. merge(arr, start, mid, end);
  41. }
  42. int main()
  43. {
  44. int arr[] = {4, 7, 6, 5, 2, 1, 8, 2, 9, 1};
  45. mergeSort(arr, 0, 9);
  46. printList(arr, 10);
  47. system("pause");
  48. return 0;
  49. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/658308
推荐阅读
相关标签
  

闽ICP备14008679号