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

计数排序传数组求教,该如何处理

2012-02-10 
计数排序传数组求教新手查了N久的错误 硬没查出来..结果最后发现把a,b,c三个数组声明为全局变量就可以解决

计数排序传数组求教
新手查了N久的错误 硬没查出来..
结果最后发现把a,b,c三个数组声明为全局变量就可以解决问题..请问原来的代码有什么问题?
#include<iostream>
using namespace std;
void Counting_sort(int a[],int b[],int number,int k);
//int a[200],b[200],c[200];
void main()
{
cout << "number of numbers" << endl;
int number;
cin >> number;
int a[200];
int k = 0;
for(int i = 1; i <= number; i++)
{
cin >> a[i];
if (k < a[i])
k= a[i];
}
int b[200];
Counting_sort(a,b,number,k);
for(i = 1; i <= number; i++)
{
cout << b[i] + 1 << " ";
}
}
void Counting_sort(int a[],int b[],int number,int k)
{
int c[200];
for(int i = 0; i <= k; i++)
{
c[i] = 0;
}
for(i = 0; i <= number; i++)
{
c[a[i]]++;
}
for(i = 1; i <= k; i++)
{
c[i] = c[i] + c[i - 1];
}
for(i = number; i >= 1; i--)
{
b[c[a[i]]] = a[i];
c[a[i]]--;
}
}







[解决办法]
static int a[200],b[200],c[200];
在占用内存空间较大的局部数组声明的前面加static将其从堆栈数据段挪到全局数据段即可。

热点排行