当前位置:   article > 正文

C++归并排序(完整版)_归并排序c++代码

归并排序c++代码
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. void merge(vector<int> &arr,int L,int mid,int R)
  5. {
  6. int *help = new int(R-L+1);
  7. int p1=L,p2=mid+1,i=0;
  8. while(p1<=mid && p2<=R)
  9. {
  10. help[i++] = arr[p1]>arr[p2] ? arr[p2++] : arr[p1++];
  11. }
  12. while(p1<=mid)
  13. help[i++] = arr[p1++];
  14. while(p2<=R)
  15. help[i++] = arr[p2++];
  16. for (int i=0;i<R-L+1;i++)
  17. {
  18. arr[L+i] = help[i];
  19. }
  20. }
  21. void sortprocess(vector<int> &arr,int L,int R)
  22. {
  23. if (L < R)
  24. {
  25. int mid = L + ((R-L)>>2); // (L+R)/2
  26. sortprocess(arr,L,mid);
  27. sortprocess(arr,mid+1,R);
  28. merge(arr,L,mid,R);
  29. }
  30. }
  31. void MergeSort(vector<int> &arr,int L,int R)
  32. {
  33. if (arr.size()<2)
  34. return;
  35. sortprocess(arr,L,R);
  36. }
  37. int main()
  38. {
  39. vector<int> arr;
  40. int n,temp;
  41. cin>>n; //输入n个数
  42. for (int i=0;i<n;i++)
  43. {
  44. cin>>temp; //输入数据
  45. arr.push_back(temp);
  46. }
  47. MergeSort(arr,0,arr.size()-1);
  48. for(int i=0;i<arr.size();i++)
  49. cout<<arr[i]<<endl;
  50. system("pause");
  51. return 0;
  52. }

 

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

闽ICP备14008679号