排序——归并排序
来源:互联网 发布:软考初级程序员答案 编辑:程序博客网 时间:2024/05/21 19:43
利用递归的思想,当N=1时,只有一个元素需要排序,为递归临界条件;否则,递归的将前半部分数据和后半部分数据各自归并排序,得到排序后的两部分数据,然后再将得到的两部分合并到一起。
//mergeSort algorithm public void mergeSort(int[] data){if(data == null || data.length<2) return;int[] tmparray=new int[data.length];mergeSort(data,tmparray,0,data.length-1);} //mergeSort例程; public void mergeSort(int[] data,int[] tmparray,int left,int right) { if(left<right) { int center=left+(right-left)/2; mergeSort(data,tmparray,left,center); mergeSort(data,tmparray,center+1,right); merge(data,tmparray,left,center+1,right); } } //merge例程; public void merge(int[] data,int[] tmparray,int leftpos,int rightpos,int rightend) { int leftend=rightpos-1; int tmppos=leftpos; int index=leftpos;//记录没有更改时的leftpos,最后对data赋值时使用; while(leftpos<=leftend&&rightpos<=rightend) { if(data[leftpos]<data[rightpos]) { tmparray[tmppos++]=data[leftpos++]; } else { tmparray[tmppos++]=data[rightpos++]; } } while(leftpos<=leftend) { tmparray[tmppos++]=data[leftpos++]; } while(rightpos<=rightend) { tmparray[tmppos++]=data[rightpos++]; } //将tmparray赋值给data; while(index<=rightend) { data[index]=tmparray[index]; index++; } }
0 0
- 排序—归并排序
- 排序——归并排序
- 排序——归并排序
- 排序——归并排序
- 排序——归并排序
- 排序——归并排序
- 排序——归并排序
- 排序——归并排序
- 排序——归并排序
- 排序——归并排序
- 排序算法—归并排序
- 内部排序—归并排序
- 排序算法—归并排序
- 数据结构 — 归并排序
- 数据结构 — 归并排序
- 排序3——堆排序,归并排序,快速排序
- 数据结构之排序——归并排序
- 排序新风格——归并排序
- Winform NetAdvantage的Summary相关功能(一)
- 新闻类list,支持两种不同的item
- cocos2dx3.x 导出自定义事件到lua的方法
- Android-微信支付简单教程
- nohup linux 运行不了
- 排序——归并排序
- 网易视频云:新一代列式存储格式Parquet
- ACE框架整合记录6菜单权限列表样式效果
- C与指针
- OC语言笔记(七):OC字符串Json、plist、NSNumber和NSValue、KVC
- 【聚焦】从零开始创作 VR 内容,总共需要哪三步?
- Openfire for mac 启动报错:Could not start the Openfire server
- Android异步任务机制之AsycTask
- 如何进行 Python性能分析,你才能如鱼得水?