归并排序
来源:互联网 发布:oracle 查询重复数据 编辑:程序博客网 时间:2024/06/05 03:11
#include <stdio.h> #include <stdlib.h> #include <time.h> int a[]={0,49,38,65,97,13,27};void printf_array(int *a,int n) { int i; for(i=1;i<=n;i++) { printf( "%d ",a[i]); } printf("\n"); } void merge(int *number,int first,int mid,int last){int aux[13]={0};int i; //第一个数组索引int j; //第二个数组索引int k; //临时数组索引for (i = first, j = mid+1, k = 0; k <= last-first; k++) // 分别将 i, j, k 指向各自数组的首部。{//若 i 到达第一个数组的尾部,将第二个数组余下元素复制到 临时数组中if (i == mid+1) {aux[k] = a[j++];continue;} //若 j 到达第二个数组的尾部,将第一个数组余下元素复制到 临时数组中if (j == last+1){aux[k] = a[i++];continue;} //如果第一个数组的当前元素 比 第二个数组的当前元素小,将 第一个数组的当前元素复制到 临时数组中if (number[i] < number[j]){ aux[k] = number[i++];}//如果第二个数组的当前元素 比 第一个数组的当前元素小,将 第二个数组的当前元素复制到 临时数组中else{ aux[k] = number[j++];}}//printf_array(aux,last-first+1);for(k=0;k<=last-first;k++)number[first+k]=aux[k];}void merge_sort(int *number,int first,int last){ int mid=0; if(first<last) {mid=(first+last)/2;merge_sort(number,first,mid);merge_sort(number,mid+1,last);merge(number,first,mid,last); }}void main(){printf_array(a,6);merge_sort(a,1,6);printf_array(a,6);}
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- Gdb调试简要介绍
- $(window).load(function() {})和$(document).ready(function(){})的区别
- Siebel Error: Unable to create the Business Service ''(SBL-DAT-00227)
- 风
- 在对话框里面使用ON_UPDATE_COMMAND_UI映射工具条/菜单
- 归并排序
- hibernate lazy和fetch
- JQuery获取和设置Select选项方法
- webkit介绍
- 注解浅析
- linux0.11练习提升
- Webkit–DOM分析
- X Windows Extension的编写和加载
- WPF学习笔记 - .Net Framework的分离存储技术