归并排序
来源:互联网 发布:2016搞笑网络歌曲播放 编辑:程序博客网 时间:2024/06/07 07:18
归并排序的效率:
归并排序的运行时间是O(N*logN)。复制的次数和N*log2N成正比,对于8个数据项的排序,要复制24次。8个数据项需要有3层,每层包含8次复制
public class mergeSort {int[] array;int size;public mergeSort(int max){array = new int[max];size=0;}public void insert(int v){array[size]=v;size++;}public void display(){for(int i=0;i<size;i++)System.out.print(array[i]+" ");System.out.println();}public void mergeSort(){int[] workspace = new int[size];recMergeSort(workspace,0,size-1);}private void recMergeSort(int[] workspace, int lowerBound, int upperBound) {// TODO Auto-generated method stubif(lowerBound==upperBound)return;else{int mid = (lowerBound+upperBound)/2;recMergeSort(workspace,lowerBound,mid);recMergeSort(workspace,mid+1,upperBound);merge(workspace,lowerBound,mid+1,upperBound);}}private void merge(int[] workspace, int lowPtr, int highPtr, int upperBound) {// TODO Auto-generated method stubint j=0; //workspace indexint low=lowPtr;int mid=highPtr-1;int n = upperBound-low+1;while(lowPtr<=mid&&highPtr<=upperBound){if(array[lowPtr]<array[highPtr])workspace[j++]=array[lowPtr++];elseworkspace[j++]=array[highPtr++];}while(lowPtr<=mid)workspace[j++]=array[lowPtr++];while(highPtr<=upperBound)workspace[j++]=array[highPtr++];for(j=0;j<n;j++)array[low+j]=workspace[j]; //把排好序的数组移回原来的数组}/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubmergeSort ms = new mergeSort(100);for(int i=5;i>0;i--){ms.insert(i);}ms.display();ms.mergeSort();ms.display();}}
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- ArcEngine 3D extension has not been enabled
- 2012年4月7日腾讯实习生笔试题目之一
- 当点击网页某个按钮或者超链接执行某些需要确认的命令时,弹出确认框
- 谈谈Ubuntu for Android
- Linux kill命令
- 归并排序
- 2012年4月7日腾讯实习生笔试题目
- 中文分词与停用词的作用
- 第9周实验报告1
- MapReduce基础
- Hadoop HBase 单机环境简单配置教程
- MapReduce数据流(一)
- 构建Java并发模型框架
- 索引聚簇表ICT测试(Index Cluster Table)