算法(第四版)——05归并排序
来源:互联网 发布:淘宝购物怎么货到付款 编辑:程序博客网 时间:2024/06/06 03:15
public class Merge { public static void main(String[] args) {int a[] = {4,56,678,12,34,99,32,10,37,77};System.out.print("排序前的顺序是:");for (int i : a) {System.out.print(i + " ");}System.out.println();sort(a);//调用函数,进行排序System.out.print("排序后的顺序是:");for (int i : a) {System.out.print(i + " ");}}private static void sort(int[] a) {// TODO Auto-generated method stubsort(a,0,a.length-1);}private static void sort(int[] a, int lo, int hi) {// 递归函数,个人觉得这里的理解最困难,以后想通了补充理解.int mid = lo + (hi-lo)/2;if(lo<hi){sort(a,lo,mid);sort(a,mid+1,hi);merge(a,lo,mid,hi);}}private static void merge(int[] a, int lo, int mid, int hi) {// TODO Auto-generated method stubint[] temp = new int[hi-lo+1];//建立一个和a长度相同的数组int i = lo;//标记左半个数组的指针int j = mid + 1;//标记右半个数组的指针int k = 0;//数组temp的指针//下方的while循环可以把两个数组中较小的值赋给temp,每次赋值之后指针要移动while(i <= mid && j <= hi) {if(a[i]<a[j]) {temp[k++] = a[i++];} else {temp[k++] = a[j++];}}//下方两个while循环的作用是把剩下未赋值的继续赋值while (i <= mid) {temp[k++] = a[i++];}while(j <= hi) {temp[k++] = a[j++];}//temp的值赋给afor (int k2 = 0; k2 < temp.length; k2++) {a[k2+lo] = temp[k2];}}}算法第四版的代码没有运行出来。。。也看不出来书上的错误,第二遍看书的时候再考虑一下
0 0
- 算法(第四版)——05归并排序
- 《算法(第四版)》排序-----归并排序
- 归并排序—数据结构与算法分析第四版
- 算法 第四版 归并排序
- 算法 第四版---2.2归并排序
- 【算法】排序算法第四讲:归并排序
- 排序算法—归并排序
- 排序算法—归并排序
- 算法(第四版)——05快速排序
- 算法(第四版)学习笔记之java实现归并排序
- 算法(第四版)学习笔记之归并排序的优化
- 【算法】排序算法(三)——归并排序
- 《排序算法》——归并排序,插入排序(Java)
- 排序算法(2)—归并排序,快速排序
- 算法——归并排序
- 算法 —— 归并排序
- 算法——归并排序
- 算法——归并排序
- java网络爬虫
- php通过socket调用http和smtp协议
- 操作系统nachoes一些问题与解决方法
- 基于DMA 控制STM32F407两(多)路AD通道配置
- 《蒂凡尼的早餐》
- 算法(第四版)——05归并排序
- Java知识点总结
- oracle基本命令
- JavaScript基础
- Adb
- java笔记(二)——反射技术
- JavaScript小结(三)----字符串操作
- java基础-集合
- 设计模式_观察者模式