小sugar呀——归并排序
2016-07-09 07:49
274 查看
day2
嘛嘛嘛,昨天看了一天都不知道哪里错了,最后还是放到百度知道上,大神给改了改。感谢 百度ID:电灯剑客
归并排序,求大神帮忙看一下哪里错了。_百度知道
http://zhidao.baidu.com/question/1897853185788016180.html
嘛嘛嘛,昨天看了一天都不知道哪里错了,最后还是放到百度知道上,大神给改了改。感谢 百度ID:电灯剑客
归并排序,求大神帮忙看一下哪里错了。_百度知道
http://zhidao.baidu.com/question/1897853185788016180.html
#include<stdio.h> #include<stdlib.h> void merge(int a[],int p,int q,int r)//合并 { int n1,n2,i,j,k; n1=q-p+1; n2=r-p; int left[n1]; int right[n2]; for(i=0; i<n1; i++) left[i]=a[p+i];//注意这里要写成a[p+i] for(j=0; j<n2; j++) right[j]=a[q+1+j]; i=j=0; k=p;//注意是k=p while(i<n1&&j<n2) { if(left[i]<right[j]) a[k++]=left[i++]; else a[k++]=right[j++]; } while(i<n1) { a[k++]=left[i++]; } while(j<n2) { a[k++]=right[j++]; } } void mergesort(int a[],int p,int r)//递归 { int q; if(p<r) { q=(p+r)/2; mergesort(a,p,q); mergesort(a,q+1,r); merge(a,p,q,r); } } int main() { int a[8]= {2,5,4,8,7,6,1,3}; int i; for(i=0; i<8; i++) printf("%-2d",a[i]); printf("\n"); mergesort(a,0,7); for(i=0; i<8; i++) printf("%-2d",a[i]); printf("\n"); return 0; }
相关文章推荐
- 举例讲解C语言对归并排序算法的基础使用
- java实现归并排序算法
- C++实现八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序等
- C++实现自底向上的归并排序算法
- C++实现自顶向下的归并排序算法
- Javascript中的迭代、归并方法详解
- JavaScript希尔排序、快速排序、归并排序算法
- Java实现八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序等
- Java排序算法总结之归并排序
- C#递归算法之归并排序
- C++归并排序算法实例
- Javascript排序算法之合并排序(归并排序)的2个例子
- 归并排序的递归实现与非递归实现代码
- Java编程中实现归并排序算法的实例教程
- java二路归并排序示例分享
- java实现归并排序算法
- 归并排序的实现代码与思路
- js算法:Merge Sort 归并排序
- JavaScript希尔排序、快速排序、归并排序算法
- leetcode 虐我篇之(二) Two Sum