一、直接排序法
#include<stdio.h>
int main()
{
int data[] = {97,43,21,56,71,33,41,17,28,42,90,88,83};
int i,j,t;
for(i = 0;i < sizeof(data) / sizeof(data[0]);i++)
{//sizeof(数组名)计算总字节长度 / sizeof(一个元素) 一个元素的字节 = 数组中的数目
for(j = i;j < sizeof(data) / sizeof(data[0]);j++ )
//依次取出数组中的元素和此序号及其之后的的元素相比较,也可以写成j=i+1
{
if(data[i] < data[j])
//小数放后 大数放前
{
t = data[i];
data[i] = data[j];
data[j] = t;
}
}
//结束一次比较并依次输出比较中最大的数
printf("%d ",data[i]);
}
return 0;
}
二、冒泡排序法
#include<stdio.h>
int main()
{
int data[] = {97,43,21,56,71,33,41,17,28,42,90,88,83};
int i,j,t;
for(i = 0;i < sizeof(data) / sizeof(data[0])-1;i++)
{//13个数排序,进行12趟比较,不减一也是可以的。
for(j = 0;j < sizeof(data) / sizeof(data[0])-i;j++ )
{//这个i不减也可以,看不明白手写推算一个四个数的排序就行了。
if(data[j] < data[j+1])
{//交换数值
t = data[j];
data[j] = data[j+1];
data[j+1] = t;
}
}
}
for(i=0;i<sizeof(data)/sizeof(data[0]);i++)
{//循环输出
printf("%d ",data[i]);
}
return 0;
}
注意:printf(“%d ”,data[i]); %d后面有个空格。否则输出数据间没有间隔!
网友评论