用C语言实现分治法排序
来源:互联网 发布:js 判断字符串长度 编辑:程序博客网 时间:2024/05/22 12:04
参考《算法导论》, 用C语言实现了分治法的排序。。。
/********************************************************* * MERGE_SORT.C * * To sort n numbers by merge sort method * * by Eric Brown * *********************************************************/ #include<stdio.h>#include<stdlib.h>#define N 10#define MAX 10000void merge(int num[], int p, int q, int r);void merge_sort(int num[], int p, int r);int main(void) { int num[N], p, q, i; printf("Please input %d numbers to sort(less than %d):\n", N, MAX); for(i = 0; i < N; i++) scanf("%d", &num[i]); merge_sort(num, 0, N-1); for(i = 0; i < N; i++) printf("%d ", num[i]); printf("\n"); system("pause"); return 0;}void merge(int num[], int p, int q, int r) { int n1, n2, L[q - p + 2], R[r - q + 1], i, j, k; /* L means left and R means right*/ n1 = q - p + 1; n2 = r - q; for(i = 0; i < n1; i++) L[i] = num[p + i]; for(i = 0; i < n2; i++) R[i] = num[q + i + 1]; L[n1] = MAX; R[n2] = MAX; i = 0; j = 0; for(k = p; k <= r; k++){ if(L[i] <= R[j]){ num[k] = L[i]; i++; } else { num[k] = R[j]; j++; } }}void merge_sort(int num[], int p, int r) { int q; if(p < r) { q = (p + r) / 2; merge_sort(num, p, q); merge_sort(num, q+1, r); merge(num, p, q, r); }}
- 用C语言实现分治法排序
- 算法之合并排序【分治法】【C语言】
- 分治法-----归并排序(C语言描述)
- 纯C语言:分治快速排序源码
- 分治法--用C++实现合并排序
- 分治法之合并排序(C实现)
- C语言实现的快速排序,采用分治策略,递归实现
- 分治排序的C/C++实现
- 分治法实现归并排序
- 分治法实现归并排序
- C语言实现排序
- 分治法合并排序(C++)
- 冒泡排序法C语言实现
- 插入排序法C语言实现
- 归并排序 递归法 C语言 实现
- 用C语言实现常用排序算法
- C语言-用指针实现冒泡排序
- 用C语言实现插入排序
- MD5加密示例
- C#让Excel中数据自动生成图表
- C++快速入门 (五) 数组 和 字符串
- C++开发驱动中的重载问题
- Linux Crontab 定时任务 命令详解
- 用C语言实现分治法排序
- ftp
- 【iOS游戏开发】icon那点事 之 图标设计(三)
- ubuntu系统使用命令
- 使用CSS3和RGBa创建超酷的按钮
- Emacs软件的基础配置文件
- ios开发点滴
- CF 145E
- TWaver Android 概述