69,371
社区成员
发帖
与我相关
我的任务
分享
/******************************************************************************/
/* 算法特点:相邻元素两两比较,每趟将最值沉底即可确定一个数在结果的位置,确定
元素位置的顺序是从后往前,其余元素可能作相对位置的调整。可以进行升序或降序排序。*/
/******************************************************************************/
#include <stdio.h>
void main()
{
int a[10],i,j,t;
printf("Please input 10 numbers: "); /*请输入十个合法的数字*/
for(i = 0; i < 10; i++)
scanf("%d",&a[i]); /*将输入的合法的数字存储在数组a中*/
for(j = 0; j < 9; j++) /*第j趟比较*/
{
for(i = 0; i < 9 - j; i++) /*第j趟要比较的次数(9 - j)次*/
if(a[i] > a[i+1])
{
t = a[i]; /*将较大的数往后移*/
a[i] = a[i+1];
a[i+1] = t; /*最后肯定会冒出一个最大的数,并存储在a[i]中*/
}
}
printf("The sorted numbers: ");
for(i = 0; i < 10; i++) /*最后按着从小到大的顺序打印出来*/
printf("%d ",a[i]);
printf("\n");
}
#include<stdio.h>
void main()
{
int i,j,z,a[5];
int *p;
p=&a[0];
for(i=0;i<5;i++)
scanf("%d",p+i);
for(j=0;j<4;j++)
for(i=0;i<4-j;i++)
if(*(p+i)<*(p+i+1))//这里的问题,冒泡排序是两两递增式地比较
{
z=*(p+i);
*(p+i)=*(p+i+1);
*(p+i+1)=z;
}
for(i=0;i<5;i++)
printf("%d ",*(p+i));
}
#include<stdio.h>
void main()
{
int i,j,z,a[5];
int *p;
p=&a[0];
for(i=0;i<5;i++)
scanf("%d",p+i); /* 你这是输入的什么?地址?应该是输入一个数吧 */
for(j=0;j<4;j++)
for(i=0;i<4-j;i++)
if(*p<*(p+i))
{
z=*p;
*p=*(p+i);
*(p+i)=z;
}
for(i=0;i<5;i++)
printf("%d",*(p+i));
}