#include <stdio.h>
#define N 10
int main()
{//从大到小
int a[N]={2,17,8,3,24,53,82,1,29,101};
int i,j,k,t;
for(i=0;i<9;i++)
{ k=i;//a
for(j=i+1;j<10;j++)
{ // b a
if(a[j] > a[k]) //这是拿固定元素来比较,是选择排序
//如果k没有变化,说明是最大的,不需要换所以应该取反
{
t=a[j];//交换两个位置 a[i]和最后一个比他大的换位置,后面再换
a[j]=a[i];
a[i]=t;
}
}
}
for(i=0;i<9;i++)
printf("%d ",a[i]);
return 0;
}
选择排序
k是不会变化的(因为k是确定哪一个擂台),意味着一直在拿这个位置上的元素和他后 每 个元素进行比较,如果比他小,就会换数字,然后继续进行比较,也就是,一轮下来,可以直接把最大的放在最前面。
//相当于第一个for是提供擂台
冒泡排序
除了最后一个元素都要进行比较,通过第二层循环进行比较,每一次比较都要判断和换位置,每次都是最多要判断的次数,把最大或者最小的数放在 最后 ,是进行的两个相邻元素比较(突然说的不太清楚冒泡排序)