在线推广网站的方法有哪些网站制作深
news/
2025/9/23 5:29:30/
文章来源:
在线推广网站的方法有哪些,网站制作深,郑州建站公司网站,计算机应用技术培训班思路:
将待排序数组分成两个子数组#xff0c;计算中间位置mid。对左半部分进行递归排序#xff0c;得到一个有序的子数组。对右半部分进行递归排序#xff0c;得到另一个有序的子数组。合并两个有序的子数组#xff0c;得到一个完整的有序数组。 示例图: 代码: #include计算中间位置mid。对左半部分进行递归排序得到一个有序的子数组。对右半部分进行递归排序得到另一个有序的子数组。合并两个有序的子数组得到一个完整的有序数组。 示例图: 代码: #includeiostream
using namespace std;void merge(int arr[], int start1, int end1, int start2, int end2){//左边数组的长度int n1 start1 - end1 1;//右边数组的长度int n2 start2 - end2 1;//定义左右两个子数组int* arr_left new int[n1];int* arr_right new int[n1]; //从原数组中复制左边的数组for(int i 0; i n1; i) left_arr[i] arr[start1 i];//从原数组中复制右边的数组for(int i 0; i n2; i) right_arr[i] arr[start2 i];//指向左右两个数组首元素的指针int left 0, right 0;//临时数组,存放合并后的数组int p start1;//左右两个数组不为空while(left n1 right n2){//左边数组的元素小于右边数组的元素if(arr_left[left] arr_right[right]){//将左边数组的值存入临时数组,同时两指针右移一位arr[p] arr_left[left];}//右边的数组为空while(left n1){//将左边数组的值存入临时数组,同时两指针右移一位arr[p] arr_left[left];}//左边的数组为空while(right n2){//将右边数组的值存入临时数组,同时两指针右移一位arr[p] arr_right[right];}}mergesort(int arr[], int start, int end){//当数组长度小于等于1时直接返回数组
if(start end){return;}//取数组的中间位置
int mid (start end) / 2;//对左边的数组进行递归排序
mergesort(arr, start, mid);//对右边的数组进行递归排序
mergesort(arr,mid 1, end);//递归的的两个数组进行合并
merge(arr, start, mid, mid 1, end);}int main(){//定义数组int arr[] {8, 1, 3, 2, 9, 7, 6, 5, 4};//数组长度int n sizeof(arr) / sizeof(arr[0]);//调用递归数组mergesort(arr, 0, n - 1);//打印数组for(int i 0; i n; i){cout arr[i] ;}return 0;}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/911475.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!