冒泡排序流程
x个数排序
执行x-1遍
第一遍交换x-1次
第二遍交换x-2次
。
。
。
。第x-1遍交换1次
代码:
int i=0,j=0;
int tmp=0;
int a[5]={5,3,4,2,6};
int len = sizeof(a)/sizeof(a[0]);//要排序的数的个数
for(i=0;i<len-1;i++)
for(j=0;j<len-1-i;j++)
{
if(a[j]>a[j+1])
{
tmp = a[j];
a[j]=a[j+1];
a[j+1]= tmp;
}
}
选择排序:
选最小的排在最前面
共选择x-1轮(x为要排序的数的个数)
第一轮选择1个数与剩下x-1个数作比较
用min先存第一个数的下标,之后将小的数对应的下标存入min,比较完成后,,若min存的下标不变,则不交换,进行下一轮比较,若变了,则将存入的下标对应数组元素与初始存的下标对应的数组元素中存的数做交换。
第二轮则选择第二个数,与未被选择过的数作比较,存下标,交换数;
第三轮同理
。
。
。
直到第x-1轮,最后一次选择第x-1个数,与最后一个数比较
代码:
int min=0,i=0,j=0,tmp=0;
int a[5]={7,3,2,9,1};
int len = sizeof(a)/sizeof(a[0]);
for(i=0;i<len-1;i++)
{
min=i;
for(j=i+1;j<len;j++)
{
if(a[min]>a[j])
min=j;
}
if(min ! = i)
{
tmp=a[i];
a[i]=a[min];
a[min]=tmp;
}
}