首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

编译没错,但是运行到数组输出就不能进行下去了,请帮忙调试一下。该如何处理

2012-03-27 
编译没错,但是运行到数组输出就不能进行下去了,请帮忙调试一下。RT,我用的是vs2010C/C++ code#includestdi

编译没错,但是运行到数组输出就不能进行下去了,请帮忙调试一下。
RT,我用的是vs2010

C/C++ code
#include<stdio.h>#include<stdlib.h>void main(){    void merge(int a[],int k,int n);    int a[10]={2,5,9,10,12,3,6,8,11,23};    printf("此数组为:\n");    for(int j=0;j<10;j++) printf("%d ",a[j]);    printf("\n");    merge(a,5,10);    for(int j=0;j<10;j++) printf("%d ",a[j]);    printf("\n");    system("pause");}void merge(int a[],int k,int n){    int binarysearch(int a[],int x,int left,int right);    void shiftright(int a[],int t,int s,int k);    int i=0,j=k;    while(i<k&&j<n)    {        int p=binarysearch(a,a[i],j,n-1);        shiftright(a,p,i,p-j+1);        j=p+1;i+=p-j+2;    }}int binarysearch(int a[],int x,int left,int right){    int middle=0;    while(left<=right)    {        if(x==a[middle]) return middle;        else        {            if(x>a[middle]) left=middle+1;            else right=middle-1;        }    }    if(x<a[middle]) return middle-1;    else return middle;}void shiftright(int a[],int t,int s,int k){    for(int i=0;i<k;i++)    {        int temp=a[t];        for(int j=t;j<s;j--) a[j]=a[j-1];        a[s]=temp;    }}


[解决办法]
C/C++ code
void merge(int a[],int k,int n){    int binarysearch(int a[],int x,int left,int right);    void shiftright(int a[],int t,int s,int k);    int i=0,j=k;    while(i<k&&j<n)    {        int p=binarysearch(a,a[i],j,n-1);        shiftright(a,p,i,p-j+1);        j=p+1;i+=p-j+2;    }}int binarysearch(int a[],int x,int left,int right){    int middle=(left+right)/2;    while(left<=right)    {        if(x==a[middle]) return middle;        else        {            if(x>a[middle]) left=middle+1;            else right=middle-1;        }        middle=(left+right)/2;    }    if(x<a[middle]) return middle-1;    else return middle;}void shiftright(int a[],int t,int s,int k){    for(int i=0;i<k;i++)    {        int temp=a[t];        for(int j=t;j<s;j--) a[j]=a[j-1];        a[s]=temp;    }}int main(){    void merge(int a[],int k,int n);    int a[10]={2,5,9,10,12,3,6,8,11,23};    printf("此数组为:\n");    for(int j=0;j<10;j++) printf("%d ",a[j]);    printf("\n");    merge(a,5,10);    for(int j=0;j<10;j++) printf("%d ",a[j]);    printf("\n");    system("pause");} 

热点排行