2026/4/17 23:49:55
网站建设
项目流程
丽江建设局网站,南京外贸网站建设公司,免费手机版网站建设,建站平台塔山双喜一、题目描述 二、算法原理
本题使用快排和归并排序都能解决这道题目#xff0c;这里使用的归并排序#xff0c;归并排序的思想和快排的思想都是进行分治的思想#xff0c;对于归并排序的实现和思路#xff0c;请各位看这篇博客#xff1a;https://blog.csdn.net/2403_84…一、题目描述二、算法原理本题使用快排和归并排序都能解决这道题目这里使用的归并排序归并排序的思想和快排的思想都是进行分治的思想对于归并排序的实现和思路请各位看这篇博客https://blog.csdn.net/2403_84958571/article/details/147355114?fromshareblogdetailsharetypeblogdetailsharerId147355114sharereferPCsharesource2403_84958571sharefromfrom_link这篇博客超级详细的这里就不再赘述了。三、代码实现class Solution { public: vectorint sortArray(vectorint nums) { vectorint tmp(nums.size());//创建一数组防止后面操作干扰到原数组 nums Quicksort(0,nums.size() - 1,nums,tmp); return nums; } void Quicksort(int l,int r,vectorint nums,vectorint tmp) { if(l r) return; int keyi l (r - l) / 2; Quicksort(l,keyi,nums,tmp);//左边【 l , keyi 】 Quicksort(keyi 1,r,nums,tmp);//右边【keyi 1,r 】 int begin1 l,end1 keyi;//左边数组 int begin2 keyi 1,end2 r;//右边数组 int index l;//遍历起始点 while(begin1 end1 begin2 end2)//比较遍历 { if(nums[begin1] nums[begin2]) tmp[index] nums[begin2]; else tmp[index] nums[begin1]; } while(begin1 end1) tmp[index] nums[begin1];//把左边剩余的数字放到 tmp while(begin2 end2) tmp[index] nums[begin2];//把右边剩余的数字放到 tmp for(int i l;i index;i) nums[i] tmp[i];//把 tmp 里面的数字放回到原数组 nums } };