归并排序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | void merge1( int *a, int left, int mid, int right){ int n1=mid-left+1; int n2=right-mid; int *arr1= new int [n1]; int *arr2= new int [n2]; for ( int i=0;i<n1;i++) arr1[i]=a[left+i]; for ( int i=0;i<n2;i++) arr2[i]=a[mid+i+1]; int i=0,j=0,k=left; while (i<n1&&j<n2){ if (arr1[i]<arr2[j]) a[k++]=arr1[i++]; else a[k++]=arr2[j++]; } while (i<n1){ a[k++]=arr1[i++]; } while (j<n2){ a[k++]=arr2[j++]; } } void merge2( int *a, int left, int mid, int right){ int i=left; int j=mid+1; int *temp= new int [right-left+1]; int t=0; while (i<=mid&&j<=right) if (a[i]<=a[j]) temp[t++]=a[i++]; else temp[t++]=a[j++]; while (i<=mid) temp[t++]=a[i++]; while (j<=right) temp[t++]=a[j++]; t=0; while (left<=right) a[left++]=temp[t++]; } void mergeSort( int *a, int left, int right){ if (left<right){ int mid=(left+right)/2; mergeSort(a,left,mid); mergeSort(a,mid+1,right); merge1(a,left,mid,right); //merge2(a,left,mid,right); } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗