user-0 提问: 麻烦大家帮我看一下我的代码哪里出问题了

回复:
user: user-0
content: 引用 3 楼 user-3的回复:n最大是100000，楼主你int number[20]= {0};这一句开辟的空间太少了，只有20个，不足以保存那么多数，所以越界了 你好 方便留个联系方式吗？扣扣或者微信的我想以后有问题百度不到的时候请教你

user: user-0
content: 引用 2 楼 playinend的回复:我也运行了几次 编译器连警告都没给 输出结果也对着呢 代码看了两遍 也看不出错误 这里说一下我认为可以改进的地方吧 首先你这里用固定数组 用户输入的n过大内存就会溢出 可以改成动态分配内存 另外你的二重循环还可以优化一下 效率会更高 哈哈水平有限 希望对你有用 你好 方便留个联系方式吗？扣扣或者微信的我想以后有问题百度不到的时候请教你

user: user-1
content: #include <stdio.h> int main () { 	int n,i,j,temp,max=0; 	scanf("%d",&n); 	int a[n]; 	for(i=0;i<n;i++) 	{ 		scanf("%d",&a[i]); 	} 	for(i=0;i<n;i++) 	{ 		for(j=i;j<n;j++) 		{ 			if(a[j]>max) 			{ 				temp=max; 				max=a[j]; 				a[j]=temp; 			} 		} 		a[i]=max; 		max=0; 	} 	for(i=0;i<n;i++) 		printf("%d ",a[i]); 	return 0; } 试试这个。

user: user-0
content: 引用 16 楼 playinend的回复:for(p= n; p > 0; p-- )         for(q=0; q < p - 1; q++)             if(pn[q]<pn[q+1])             {                 zanshi=pn[q];                 pn[q]=pn[q+1];                 pn[q+1]=zanshi;             } 对比一下你原来那个二重循环（不知道你后来改了没有），我这个循环次数少了一半 OK  我懂了   谢谢啊

user: user-1
content: 代码出问题，如果没报错，有两种解决方案，一种是调试，一种是在每一截语句后面加输出，看看你语句中的变量值是否和你所想要的结果一样，不一样就说明你这截代码有问题，否则就继续往下，直到你找出问题来为止。

user: user-2
content: 100000个数据 我用的冒泡排序 比你这个二重循环效率还要高些 排序循环部分的运行时间用了39s 上万的数据你这种循环效率太低了 建议改个算法

user: user-2
content: for(p= n; p > 0; p-- )         for(q=0; q < p - 1; q++)             if(pn[q]<pn[q+1])             {                 zanshi=pn[q];                 pn[q]=pn[q+1];                 pn[q+1]=zanshi;             } 对比一下你原来那个二重循环（不知道你后来改了没有），我这个循环次数少了一半

user: user-0
content: 引用 14 楼 qq_36409192的回复:[quote=引用 12 楼 NDFour 的回复:] [quote=引用 10 楼 qq_36409192 的回复:] 代码出问题，如果没报错，有两种解决方案，一种是调试，一种是在每一截语句后面加输出，看看你语句中的变量值是否和你所想要的结果一样，不一样就说明你这截代码有问题，否则就继续往下，直到你找出问题来为止。  你好  我是在本地试完了所有题目给出的数据之后  发现没错  才提交的   但是online judge 就报错了    具体也不说是用哪个数据时结果错了， 所以想找错误有点难。。。。[/quote] 题目考的就是让你动态分配数组大小，你直接定义一个20大小的数组，就算你程序没问题也是通过不了的。可以这样改下： int n; scanf("%d",&n); int a[n];[/quote] 谢谢提醒啊  不过那个我已经修改过了  我用的malloc函数  动态分配内存  但是提示时间超限   应该是哪里的循环出问题了  上面的评论里有一位说是我算法可能效率太低导致的   正在尝试修改

user: user-1
content: 引用 12 楼 NDFour 的回复:[quote=引用 10 楼 qq_36409192 的回复:] 代码出问题，如果没报错，有两种解决方案，一种是调试，一种是在每一截语句后面加输出，看看你语句中的变量值是否和你所想要的结果一样，不一样就说明你这截代码有问题，否则就继续往下，直到你找出问题来为止。  你好  我是在本地试完了所有题目给出的数据之后  发现没错  才提交的   但是online judge 就报错了    具体也不说是用哪个数据时结果错了， 所以想找错误有点难。。。。[/quote] 题目考的就是让你动态分配数组大小，你直接定义一个20大小的数组，就算你程序没问题也是通过不了的。可以这样改下： int n; scanf("%d",&n); int a[n];

user: user-0
content: 引用 9 楼 playinend 的回复: 100000个数据 我用的冒泡排序 比你这个二重循环效率还要高些 排序循环部分的运行时间用了39s 上万的数据你这种循环效率太低了 建议改个算法  你好  我用的就是在书上看到的 起泡 法  排序， 不就是用 2个  for 循环么？ 为什么我和你的效率会差别很大呢？可以解释一下吗，谢谢！

user: user-0
content: 引用 10 楼 qq_36409192 的回复:代码出问题，如果没报错，有两种解决方案，一种是调试，一种是在每一截语句后面加输出，看看你语句中的变量值是否和你所想要的结果一样，不一样就说明你这截代码有问题，否则就继续往下，直到你找出问题来为止。  你好  我是在本地试完了所有题目给出的数据之后  发现没错  才提交的   但是online judge 就报错了    具体也不说是用哪个数据时结果错了， 所以想找错误有点难。。。。

user: user-0
content: 引用 9 楼 playinend 的回复: 100000个数据 我用的冒泡排序 比你这个二重循环效率还要高些 排序循环部分的运行时间用了39s 上万的数据你这种循环效率太低了 建议改个算法  嗯嗯  谢谢建议   我试一下

user: user-0
content: 引用 2 楼 playinend 的回复:我也运行了几次 编译器连警告都没给 输出结果也对着呢 代码看了两遍 也看不出错误 这里说一下我认为可以改进的地方吧 首先你这里用固定数组 用户输入的n过大内存就会溢出 可以改成动态分配内存 另外你的二重循环还可以优化一下 效率会更高 哈哈水平有限 希望对你有用   不好意思哈  我改了一下 用刚学的number=(int*)malloc(n*sizeof(int)); 动态分配内存，使用完后也free了   但是提示 “时间超限 ”  麻烦能再帮忙看一下吗？  时间超限   引用 7 楼 playinend 的回复:唔 这种程序检测平台我也没用过 我想时间超限可能是指你程序运行时间过长 也就是使用的算法效率太低了 不过这种问题只有输入大量数据时才能看出来的 你知道它输入的n是多大吗 在上面的题目截图中有的  是 1到 100000

user: user-2
content: 唔 这种程序检测平台我也没用过 我想时间超限可能是指你程序运行时间过长 也就是使用的算法效率太低了 不过这种问题只有输入大量数据时才能看出来的 你知道它输入的n是多大吗

user: user-0
content: 引用 3 楼 shihengzhen101 的回复:n最大是100000，楼主你int number[20]= {0};这一句开辟的空间太少了，只有20个，不足以保存那么多数，所以越界了  不好意思哈  我改了一下 用刚学的number=(int*)malloc(n*sizeof(int)); 动态分配内存，使用完后也free了   但是提示 “时间超限 ”  麻烦能再帮忙看一下吗？  时间超限

user: user-0
content: 引用 3 楼 shihengzhen101 的回复:n最大是100000，楼主你int number[20]= {0};这一句开辟的空间太少了，只有20个，不足以保存那么多数，所以越界了  谢谢啊   我马上修改一下再提交

user: user-0
content: 引用 2 楼 playinend 的回复:我也运行了几次 编译器连警告都没给 输出结果也对着呢 代码看了两遍 也看不出错误 这里说一下我认为可以改进的地方吧 首先你这里用固定数组 用户输入的n过大内存就会溢出 可以改成动态分配内存 另外你的二重循环还可以优化一下 效率会更高 哈哈水平有限 希望对你有用 谢谢提醒  我马上试一下

user: user-3
content: n最大是100000，楼主你int number[20]= {0};这一句开辟的空间太少了，只有20个，不足以保存那么多数，所以越界了

user: user-2
content: 我也运行了几次 编译器连警告都没给 输出结果也对着呢 代码看了两遍 也看不出错误 这里说一下我认为可以改进的地方吧 首先你这里用固定数组 用户输入的n过大内存就会溢出 可以改成动态分配内存 另外你的二重循环还可以优化一下 效率会更高 哈哈水平有限 希望对你有用

user: user-0
content: 看起来很简单   但是就是不知道自己哪里 出错了