归并排序
来源:互联网 发布:网上怎么开淘宝网店 编辑:程序博客网 时间:2024/06/10 18:52
/*=============================================================================## 分治为子序列# 归并排序##=============================================================================*/#include <stdio.h>#include <time.h>#include <malloc.h>int arr[]={6, 3, 5, 7, 2, 4, 1, 8, 10, 9};//把数组合并void merg_array(int *a1,int len1,int *a2,int len2){int i=0,j=0,k=0;int *arr_temp=(int *)malloc(sizeof(int)*(len1+len2));while(i<len1&&j<len2)arr_temp[k++]=a1[i]<a2[j]? a1[i++]:a2[j++];//a2已经为空,把a1中剩余的数搬到arr_temp中去就可以了while(i<len1)arr_temp[k++]=a1[i++];while(j<len2)arr_temp[k++]=a2[j++];for(i=0,k=0;i<len1+len2;++i,++k)a1[i]=arr_temp[k];free(arr_temp);}//void merg_sort(int *a,int len){//结束条件if(len<=1)return;int *a1,*a2,len1,len2;len1=len/2;len2=len-len1;a1=a;a2=a+len1;//分治调用merg_sort(a1,len1);merg_sort(a2,len2);//分治结束,合并两个子数组merg_array(a1,len1,a2,len2);}int main(){int len=sizeof(arr)/sizeof(arr[0]);merg_sort(arr,len);for(int i=0;i<len;++i)printf("%d ",arr[i]);return 0;}
0 0
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 编程之美真是一本不错的书
- Mybatis实现【3】-初始化(配置文件读取和解析)
- 新企网络推广:如何走好网络营销第一步?
- 摘自windows核心编程之用内核对象进行线程同步
- 第一个 PHP 页面
- 归并排序
- JAXB完成XML与Java对象的互转
- ListView隔行变色
- GodSon - 关于easyui的窗口和tab页面不执行js说明
- Tomcat下使用war包发布项目
- hdu 2680 Choose the best route(最短路)
- 观察程序的状态,僵尸进程
- 黑马程序员——类加载器
- Mybatis实现【4】-查询解析(一次SQL查询的源码分析)