收藏 分销(赏)

merge-sort-归并排序.doc

上传人:仙人****88 文档编号:8618125 上传时间:2025-02-22 格式:DOC 页数:2 大小:1.60KB 下载积分:10 金币
下载 相关 举报
merge-sort-归并排序.doc_第1页
第1页 / 共2页
merge-sort-归并排序.doc_第2页
第2页 / 共2页
本文档共2页,全文阅读请下载到手机保存,查看更方便
资源描述
//该代码仅仅本人学习算法分析课程时练笔,有很多愚昧之处,望老鸟指点,谢谢! //归并排序 #include <iostream> #include <iomanip> #include <cmath> using namespace std; void merge_sort(int *data, int left ,int right); void merge(int *data, int left, int mid, int right); int main() { int n ; cout << "Enter the lenght of the list : "; cin >> n; int *data = new int[n]; int k = n; while(k--) { cout <<"Enter the " << n - k << " number : "; cin >> data[n - k - 1]; } cout << "Before quickSort , the list is :"<< endl; k = n ; while(k--) { cout << data[n - k - 1] << setw(6) ; } cout << endl; merge_sort(data,0,n-1 ); cout << "After quickSort , the list is : "<< endl; k = n ; while(k--) { cout << data[n - k - 1] << setw(6) ; } cout << endl; return 0; } void merge_sort(int *data , int left, int right) { int mid; if(left < right) { mid = (left + right)/2; merge_sort(data, left, mid); merge_sort(data, mid + 1, right); merge(data,left,mid,right); } } void merge(int *data, int left, int mid, int right) { int begin1 = left, begin2 = mid + 1, end1 = mid, end2 = right; int *temp = new int [right - left + 1]; int k = 0; while(begin1 <= end1 && begin2 <= end2 ) { if(data[begin1] < data[begin2]) { temp[k] = data[begin1]; begin1 ++; } else { temp[k] = data[begin2]; begin2 ++; } k++; } while(begin2 <= end2) temp[k++] = data[begin2++]; while(begin1 <= end1) temp[k++] = data[begin1++]; for(int i = 0; i < right- left + 1; i++ ) data[left+i] = temp[i]; delete temp; }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服