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

两数结合并并排序

2012-08-07 
两数组合并并排序C/C++ code#include iostreamusing namespace std//排序int *sort(int arr[],size_t l

两数组合并并排序

C/C++ code
#include <iostream>using namespace std;//排序int *sort(int arr[],size_t length){    int *p = 0;    for(int i=0;i<length;i++){        for(int j=i;j<length;j++){            if(arr[i]>arr[j]){//交换数据                arr[i] ^= arr[j];                arr[j] ^= arr[i];                arr[i] ^= arr[j];            }        }    }    p = arr;    return p;}//合并int *com(int arr[],int arr1[],size_t arrL,size_t arr1L){    int *p = 0;    int c[arrL+arr1L];    int j = 0;    for(int i=0;i<arrL;i++){        c[j++] = arr[i];    }    for(int i=0;i<arr1L;i++){        c[j++] = arr1[i];    }    p = sort(c,arrL+arr1L);    for(int i=0;i<10;i++){        cout<<p[i]<<' ';    }    cout<<endl;    return p;}int main(){    int arr[]= {1,2,8,3,2};    int arr1[]= {1,2,8,3,2};    size_t length = sizeof(arr)/4; //   int *a = sort(arr,length);    int *a = com(arr,arr1,length,length);    for(int i=0;i<10;i++){        cout<<a[i]<<endl;    }    return 0;}

在方法中输出的还是准确的,拿到main中输出就错误了,这是什么原因呢?下面是输出结果
C/C++ code
1 1 2 2 2 2 3 3 8 822935362293312200911907917229336820091328682009267360200913285922935364657172


[解决办法]
int *com(int arr[],int arr1[],size_t arrL,size_t arr1L){
int *p = 0;
int c[arrL+arr1L];
int j = 0;
for(int i=0;i<arrL;i++){
c[j++] = arr[i];
}
for(int i=0;i<arr1L;i++){
c[j++] = arr1[i];
}
p = sort(c,arrL+arr1L);
for(int i=0;i<10;i++){
cout<<p[i]<<' '; //p已经移动到p[9]
}
cout<<endl;
return p;//这里返回了末端的指针
}
回答完毕

热点排行
Bad Request.