HDU 1040(As Easy As A+B) 归并排序练习
2015-01-15 14:57
441 查看
练习归并排序。
代码如下:
代码如下:
#include<stdio.h> #include<string.h> #include<stdlib.h> int array[1001]; int temp[1001]; void Merge(int array[],int start,int mid,int end,int temp[]) { int i,j,k,m,n; i=start,m=mid; j=mid+1,n=end; k=0; while(i<=m && j<=n) { if(array[i]<=array[j]) { temp[k]=array[i]; i++; k++; } else { temp[k]=array[j]; j++; k++; } } while(i<=m) { temp[k]=array[i]; i++; k++; } while(j<=n) { temp[k]=array[j]; j++; k++; } for(i=start,j=0;i<=end;i++,j++) { array[i]=temp[j]; }//更新合并后 array } void Merge_Sort(int array[],int start,int end,int temp[]) { int mid; if(start<end) { mid=(end+start)/2; Merge_Sort(array,start,mid,temp);//前半部分 Merge_Sort(array,mid+1,end,temp);//后半部分分治排序 Merge(array,start,mid,end,temp);//最后前后合并 完成排序 } } int main() { int n,i; int T; while(scanf("%d",&T)!=EOF) { while(T--) { memset(array,0,sizeof(array)); memset(temp,0,sizeof(temp)); scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&array[i]); } Merge_Sort(array,0,n-1,temp); for(i=0;i<n-1;i++) printf("%d ",array[i]); printf("%d\n",array[n-1]); } } return 0; }
相关文章推荐
- HDU 1040(As Easy As A+B) 归并排序练习
- hdu-1040 As Easy As A+B
- hdu 1040 As Easy As A+B
- HDU_1040 As Easy As A+B
- HDU 1040 As Easy As A+B 水题
- hdu 1040 As Easy As A+B
- HDU 1040 As Easy As A+B
- hdu 1040 As Easy As A+B(堆排练习水题~)
- hdu_1040_As Easy As A+B_201308191751
- hdu 1040 As Easy As A+B
- HDU 1040 As Easy As A+B
- hdu 1040 As Easy As A+B
- HDU 1040 As Easy As A+B 排序
- HDU1040 As Easy As A+B【排序】
- As Easy As A+B hdu 1040 水题
- HDU-1040 as easy as a+b
- hdu 1040 As Easy As A+B
- hdu 1040 As Easy As A+B (水题,排序)
- HDU's ACM 1040 As Easy As A+B
- HDU 1040 As Easy As A+B (排序。。。水题)