归并排序
来源:互联网 发布:linux find 模糊查询 编辑:程序博客网 时间:2024/05/18 01:22
public class MergingSort { public static void main(String[] args) { int[] data = {8,5,6,4,2,9,7,3,1}; mergeSort(data,0,data.length - 1); } public static void mergeSort(int[] data, int low, int high){ int mid = (low + high) / 2; if(low<high){ mergeSort(data, low, mid); mergeSort(data, mid + 1, high); merge(data,low,mid,high); print(data); } } /** * 归并操作 * @param data 总数组 * @param low 归并子表的左边子表的第一个元素在总数组中的下标 * @param mid 归并子表的左边子表的最后一个元素在总数组中的下标,mid+1是 归并子表的右边子表的第一个元素在总数组中的下标 * @param high 归并子表的右边子表的最后一个元素在总数组中的下标 */ public static void merge(int[]data, int low, int mid, int high){ //low到high包含了两个子表的数据,mid是第一个子表数据最后一个元素的下标 //创建一个临时数组大小为需要归并的两个子表的总和长度 int[] tmpArr = new int[high-low+1]; int t = 0; //leftPoint左指针开始指向左边子表的第一个元素,后面的操作会让这个指针右移,也就是会按1的数值增加. int leftPoint = low; //rightPoint右指针指向右边第一个元素,和左指针一样,会向右移动 int rightPoint = mid + 1; //左指针移动的过程中不能超过左子表的最后一个数的下标,同意指针移动的过程中不能超过右子表的最后一个数的下标 while(leftPoint <= mid && rightPoint <= high){ //比较左右指针指向数的大小,将小的数放到临时数组里 if(data[leftPoint] < data[rightPoint]){ tmpArr[t] = data[leftPoint]; t++; leftPoint++; } else { tmpArr[t] = data[rightPoint]; t++; rightPoint++; } } //如果左指针还未移动到mid的位置,说明左子表还有数据没有放入到临时表中,将剩余的数据放入到临时表中 while(leftPoint <= mid){ tmpArr[t] = data[leftPoint]; t++; leftPoint++; } //同理右指针和左指针一样,但实际上,这两个while只会执行一个。 while(rightPoint <= high){ tmpArr[t] = data[rightPoint]; t++; rightPoint++; } //将已经排序好的临时数组赋值到原数组中 for(int i = 0; i < tmpArr.length; i++){ data[low + i] = tmpArr[i]; } } public static void print(int[] data){ for(int i = 0;i<data.length;i++){ System.out.print(data[i] + "\t"); } System.out.println(); }}
阅读全文
0 0
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 那些亮瞎你的奇葩癖好!别再说程序猿不会玩了
- CImage,MFC,图像处理
- 项目docker容器化部署步骤
- kernel编译生成Image zImage uImage的区别
- JAVA HttpURLConnection 获取网页内容
- 归并排序
- [iOS 通过手势获取触发点 CGPoint ]locationInView / translationInView
- 配置从其它服务器通过fs_cli访问freeswitch
- Redis 3.2.8 集群模式+Sentinel多Master部署
- 模型评估
- 加密机加密内容的格式
- faster rcnn 笔记
- Android平台之获取照相机预览数据帧及精确时间截
- 利用OKHttp实现 图片上传 ---b509小贴士