c归并排序 - C/C++ / C语言
void guibing(int a[],int n)
{
}
我已经初始化了一个数组a[30000]且赋值,想对这个数组进行归并排序。
但是具体怎么实现还是不知道。求源码
比如说。先一个一个排序,然后再将排序好的两个两个排序。那么这个排序过程中怎么具体实现。
156342
15 36 24
怎么把15和36合起来组成1356?
归并排序不是把15与36合起来变成1356吧?中间应该有空格隔开表示两个数!
是这样的:
首先比较头 1 5
3 6
发现1比较小,就把1移到一个临时数组中,
临时 1
5
3 6
再发现3比较小
临时 1 3
5
6
发现5比6小
临时 1 3 5
6
只有一个数组了,就全移动临时数组中
临时 1 3 5 6
再把临时数组中的元素再全部复制回来。
归并代码:C/C++ code:
#include <stdio.h>
#define MAXN 22000
int a[MAXN+1],c[MAXN+1];
long long cnt;
void MergeSort(int l, int r){
int mid, i, j, tmp;
if( r > l+1 ){
mid = (l+r)/2;
MergeSort(l, mid);
MergeSort(mid, r);
tmp = l;
for( i=l, j=mid; i < mid && j < r; ){
if( a[i] > a[j] ){
c[tmp++] = a[j++];
cnt += mid-i;
}
else c[tmp++] = a[i++];
}
if( j < r ) for( ; j < r; ++j ) c[tmp++] = a[j];
else for( ; i < mid; ++i ) c[tmp++] = a[i];
for ( i
相关问答:
请问用C或C++如何编写求解3D魔方的程序,该从何开始?
谢谢各位,帮忙提点建议吧。
http://www.mofang.net/code/176/182/6581.html
我只能突破60秒!唉。
我刚过40秒
google的android中有个OpenGL ES + ......
写了个测试程序如下
struct hostent *hp;
char AlarmDevIP[20];
int x2;
hp = gethostbyname("www.google.com");
if (hp)
{
......
#include "stdio.h"
int main()
{
char *ch(char *, char *);
char str1[]="I am glad to meet you!";
char str2[]="Welcom to study C!";
&nb ......
#include"stdio.h"
#include"stdlib.h"
void ContrTwo(char i)
{
char str1[8];
itoa(i,str1,2);
printf("%s",str1);
}
unsigned char leftRot(char str,int i);
unsign ......
如题,C/C++中的execl怎么调用写好的java程序,
execl("/opt/java1.5/bin/java","MyClass",NULL);
这样的不行哦。
不会.
运行java程序
找工具查看一下那个程序的命令行
搜索下:jni ......