10个数冒泡算法相关代码解析:
#include "stdio.h"
int main()
{//从大到小的排序
int a[10],i,j,t;
printf("input 10 numbers:\n");
for(i=0;i<10;i++)//输入
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<9;j++)//总共10个数,进行9次内部的排序,最大的数就已经到最前面了,所以就不用在此循环了
for(i=0;i<9-j;i++)//在整个数组中进行排序,将最小值放在最后面,也就是9-j的位置
if(a[i]<a[i+1])
{
t=a[i];a[i]=a[i+1];a[i+1]=t;//就是交换数据的位置,将最小的排到最后面
}
printf("the sorted numbers :\n");
for(i=0;i<10;i++)//输出
printf("%d\t",a[i]);
printf("\n");
return 0;
}
10个数选择排序算法:
#include<stdio.h>
void main()
{
int a[10],i,j,k,t;
printf("please input 10 figuer:\n");
for(i=0;i<10;i++)//输入10个数
scanf("%d",&a[i]);
for(i=0;i<9;i++)//此时,这个循环是取数,像打擂一样,让它和内部循环进行比较,取最大的数放在i位
{
k=i;
for(j=i+1;j<10;j++)//从i+1进行比较,因为前面的数已经是最大的数了,所以仅仅后面的最大的数即可
if(a[j]<a[k]) k=j;
{
t=a[k];
a[k]=a[i];
a[i]=t;
k=i;
}
}
printf("fellowing array:\n");
for(i=0;i<10;i++)//输出数据
printf("%-2d",a[i]);
printf("\n");
}
其实,冒泡法或者选择法都是差不多的,冒泡法是从后面排序,把最小的放在后面,选择法是从前面排序,把最大的放在前面(仅仅针对以上代码而言!)