|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 一世轻尘 于 2020-12-20 16:26 编辑
- #include<stdio.h>
- #include<stdlib.h>
- int main()
- {
- int n,i,j,temp;
- int*p;
- printf("请输入一个整数n:\n");
- scanf("%d",&n);
- p=(int*)malloc(n*sizeof(int));
- printf("请输入n个整数:\n");
- for(i=0;i<n;i++)
- {
- scanf("%d",&p[i]);
- }
- for(i=0;i<n;i++)
- {
- printf("%d ",p[i]);
- }
- printf("\n");
- for(j=0;j<n-1;j++)
- for(i=0;i<n-1-j;i++)
- {
- if(p[i]>p[i+1])
- {
- temp=p[i];
- p[i]=p[i+1];
- p[i+1]=temp;
- }
- }
- for(i=0;i<n;i++)
- printf("%d ",p[i]);
- return 0;
- }
复制代码 擦,我又来了,如果这样把j<n-1,i<n-1-j改为j<n,i<n-j为啥会出现这个结果,而改为j<n,i<n-1就又能正常排序了
for (j = 0;j < n;j++)
{
for (i = 0;i < n - j;i++)
{
if (p [ i ] > p[ i + 1 ])
对于输入10个整数,可以看出,i = 9 时,p[ i + 1 ] = p[9 + 1] = p[10] 越界了
|
|