合并排序(C语言实现)
void MERGE(int *A, int b, int m, int e)
{
int l = m-b+1, r = e-m, i;
int L[l+1], R[r+1];
for(i=0; i< l; i++)
{
L[i] = A[b+i];
}
for (i=0; i< r; i++)
{
R[i] = A[m+i+1];
}
L[l] = 32767;
R[r] = 32767;
l = 0;
r = 0;
for(i=0; i< e-b+1; i++)
{
if(L[l] < R[r])
{
A[b+i] = L[l];
l ++;
}
else {
A[b+i] = R[r];
r ++;
}
}
}
void MERGE_SORT(int *A, int b, int e)
{
if(b < e)
{
int m = (b + e) / 2;
MERGE_SORT(A, b, m);
MERGE_SORT(A, m+1, e);
MERGE(A, b, m, e);
}
}
int main()
{
int A[500];
int lens, i;
printf("Please Enter the lenghth of array:");
scanf("%d", &lens);
printf("Please Enter the elements of the array:");
for(i=0; i< lens; i++)
scanf("%d", &A[i]);
MERGE_SORT(A, 0, lens-1);
printf("the result of the sort is:\n");
for(i=0; i< lens; i++)
{
printf("%d ", A[i]);
}
return 0;
}
- 读《算法导论》我来C语言实现(2)——合并排序
- 排序算法-合并排序(C语言实现)
- 链栈 C语言实现
- C语言实现走台阶算法
- 实现C语言中strcpy函数
- [leetcode]Count and Say (伯爵说 C语言实现)
- C语言模拟实现strncpy、strncpy、strncat、strstr和strrstr函数实现
- 数据结构之--图的讲解与C语言实现
- PAT考试乙级1039(C语言实现)
- 链表的操作(C语言实现)
- c语言实现继承和多态
- C语言实现远程MySql的增删改查
- C语言实现哈夫曼编码
- C语言快速排序实现方案(面向ACM、NOIP)
- 利用C语言实现“百马百担”问题方法示例
- C语言实现关键路径
- 数据结构,C语言实现四则运算
- c语言实现字符编码转换
- 队列的链式实现(C语言)
- C语言顺序表的简单实现