1.冒泡法排序
(1):
#include<stdio.h>
int main()
{
int i,j,temp;
int a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]); //输入数组
for(j=0;j<9;j++) //进行 9 次循环,实现 9 趟比较
for(i=0;i<9-j;i++) // 在每一趟中进行 9-j 次比较
{
if(a[i]>a[i+1]) //相邻两个数比较
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
for(i=0;i<10;i++)
printf("%d ",a[i]); //输出排序后的结果
return 0;
}
//此为升序排列,降序排列只需把 if 条件改为 if(a[i]<a[i+1])
(2):
#include<stdio.h>
int main()
{
int i,j,temp;
int a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]); //输入数组
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
{
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
} //从第一个数开始跟它后面的每一个数作比较,并进行交换
for(i=0;i<10;i++)
printf("%d ",a[i]); //输出排序后的结果
return 0;
}
//此为升序排列,降序排列只需把 if 条件改为 if(a[i]<a[j])
2.选择法排序
#include<stdio.h>
int main()
{
int i,j,min,temp;
int a[11];
for(i=1; i<=10; i++)
scanf("%d",&a[i]);//输入数组
for(i=1; i<=9; i++)
{
min=i; //以下 4 行是找到后面数中最小的那个数的下标
for(j=i+1; j<=10; j++)
if(a[min]>a[j])
min=j;
temp=a[i]; //以下三行将 a[i+1]~a[10] 中最小值与 a[i] 对换,是属于外循环
a[i]=a[min];
a[min]=temp;
}
for(i=1; i<=10; i++)
printf("%d\n",a[i]);//输出排序后的数组
return 0;
}
//相比于冒泡排序,对换次数减少