归并排序
归并排序采用的是分治的思想
将数组对半,再对半,再对半,再对半。。。直到最后的每一个数都成单独的一块(这里就是递归了,左半边递归,右半边递归)
再将拆开后的数组合并,合并是有序的合并,升序为例,则小的在前,大的在后。
最终得到的数组就是有序的数组
//这是一个归并排序,拆分加合并的方法 public static int[] mergeSort(int [] array, int start, int end){ if(start < end){ //向左侧拆分递归 int mid = (start + end) / 2; mergeSort(array,start,mid); mergeSort(array,mid+1,end); //归并,调用下面写的方法 merge(array,start,mid,end); } return array; } public static void merge(int [] array, int left , int mid ,int right){ int [] temp = new int [array.length]; int start1 = left;//这是左边的指针,就是开始的指针 int start2 = mid + 1; int t = left;// //第一步:按照左右两个半边进行合并,指针遍历小的就放进辅助数组temp中,直到有一边的数据以及全部放完 while(start1 <= mid && start2<=right){ if(array[start1]<=array[start2]) temp[t++]=array[start1++]; else temp[t++]=array[start2++]; } //第二步:将左边或者右边没有填充完的数据直接添加到temp辅助数组中 while (start1 <= mid){ temp[t++] = array[start1++]; } while (start2 <= right){ temp[t++] = array[start2++]; } //第三步:将temp数组复制到array数组中 for (int i = left; i <=right; i++) { array[i] = temp[i]; } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!