当前位置: 代码迷 >> C语言 >> 指针实现冒泡排序的简单问题...
  详细解决方案

指针实现冒泡排序的简单问题...

热度:110   发布时间:2006-11-04 12:27:38.0
指针实现冒泡排序的简单问题...

看代码:
#include<stdio.h>
void main()
{
int i, j, temp, num[5]={12,15,54,36,85};
for(i=0; i<5-1; i++)
{
for(j=0; j<5-i-1; j++)
{
if(num[j]<num[j+1])
{
temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
}
}
}
printf("从大到小输出数组为的:\n");
for(i=0;i<5;i++)
printf("%4d",num[i]);
}

我想用指针来实现上面的排序,,该怎么写那个嵌套循环??高手指点下

#include<stdio.h>
void main()
{
int i, j, num[5]={12,15,54,36,85};
int *arr;
arr=num;

/* 下面怎么写控制交换的那一段啊?*/

printf("从大到小输出数组为的:\n");
for(*arr, i=0; i<5; *(arr++), i++)
printf("%4d",*arr);
}

搜索更多相关的解决方案: 指针  简单问题  冒泡  

----------------解决方案--------------------------------------------------------

#include<stdio.h>
void main()
{
int i, j,num[5]={12,15,54,36,85},temp;
int *arr;
arr=num;

/* 下面怎么写控制交换的那一段啊?*/

printf("从大到小输出数组为的:\n");
for(i=0;i<5-1;i++)
{for( j=0; j<5-i-1; *(arr++), j++)
{
if(*arr<*(arr+1))
{
temp=*arr;
*arr=*(arr+1);
*(arr+1)=temp;
}

}
arr=num;
}
arr=num;
for( i=0; i<5; *(arr++), i++)
printf("%4d",*arr);
}



----------------解决方案--------------------------------------------------------
太谢谢咯,试了半天原来少了句话....但是还有点点不清楚
#include<stdio.h>
void main()
{
int i, j, temp,num[5]={12,15,54,36,85};
int *arr;
arr=num;
for(i=0;i<5;i++)
{ for(*arr, j=0; j<5-i-1; *(arr++), j++)
{
if(*arr<*(arr+1))
{
temp=*arr;
*arr=*(arr+1);
*(arr+1)=temp;
}
}
arr=num; //为什么要加这一句呢??它还是加在循环里面 为什么?..
}
arr=num; //这句可不可以省略? 我省略了也可以执行啊....
printf("从大到小输出数组为的:\n");
for(*arr, i=0; i<5; *(arr++), i++)
printf("%6d",*arr);
printf("\n");
}
----------------解决方案--------------------------------------------------------
以下是引用ziyi555在2006-11-4 13:08:41的发言:
太谢谢咯,试了半天原来少了句话....但是还有点点不清楚
#include<stdio.h>
void main()
{
int i, j, temp,num[5]={12,15,54,36,85};
int *arr;
arr=num;
for(i=0;i<5;i++)
{ for(*arr, j=0; j<5-i-1; *(arr++), j++)
{
if(*arr<*(arr+1))
{
temp=*arr;
*arr=*(arr+1);
*(arr+1)=temp;
}
}
arr=num; //为什么要加这一句呢??它还是加在循环里面 为什么?../*这个地方是不加是不可以,因为第一点,会有超出数组范围。第二点,冒泡不可以实现,你不信你可以试试。
}
arr=num; //这句可不可以省略? 我省略了也可以执行啊..../*这个地方不加也可以,上面已经有*/
printf("从大到小输出数组为的:\n");
for(*arr, i=0; i<5; *(arr++), i++)
printf("%6d",*arr);
printf("\n");
}


----------------解决方案--------------------------------------------------------
冒泡排序到底是什么啊
我怎么弄了半天都不懂?
----------------解决方案--------------------------------------------------------

  相关解决方案