C——用冒泡排序法、选择排序法对1随机输入的10个整数从小到大排序

//冒泡排序法
#include 
int main()
{
    int i,j,t,a[10];
    for(i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<9;i++)//10个数,进行9次循环,进行9趟比较
    {
        for(j=0;j<9-i;j++)//在每一趟比较中,进行9-i次比较
        {
            if(a[j]>a[j+1])
            {
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
        }
    }
    for(j=0;j<10;j++)
    {
        printf("%d\n",a[j]);
    }
    return 0;
}

i表示第几趟
j表示次数第几次:、
也就是说
第一趟(i=0),比较9-i次(9)次 
第二趟(i=1),比较9-i次(8)次 
第三趟(i=2),比较9-i次(7)次 
第四趟(i=3),比较9-i次(6)次 
第五趟(i=4),比较9-i次(5)次 
第六趟(i=5),比较9-i次(4)次 
第七趟(i=6),比较9-i次(3)次 
第八趟(i=7),比较9-i次(2)次 
第九趟(i=8),比较9-i次(1)次 





原理:
每两个相邻的数进行比较,小的数在前,大的数在后;
10个数只需要比较9趟,也就是i走【0~9】趟,j每一趟对应走【0~9-i】次
推广:
n个数比较的话
i走【0~n-1】趟,j每一趟对应走【0~n-1-i】次

 第一趟:              a[0]与a[1]比较   a[1]与a[2]比较  ... a[8]与a[9]比较 //比较9次,由j控制
 第二趟                a[0]与a[1]比较   a[1]与a[2]比较  ... a[7]与a[8]比较 //比较8次,由j控制
 第三趟                a[0]与a[1]比较   a[1]与a[2]比较  ... a[6]与a[7]比较 //比较7次,由j控制
 第四趟                a[0]与a[1]比较   a[1]与a[2]比较  ... a[5]与a[6]比较 //比较6次,由j控制
 第五趟                a[0]与a[1]比较   a[1]与a[2]比较  ... a[4]与a[5]比较 //比较5次,由j控制
 第六趟                a[0]与a[1]比较   a[1]与a[2]比较  ... a[3]与a[4]比较 //比较4次,由j控制
 第七趟                a[0]与a[1]比较   a[1]与a[2]比较      a[2]与a[3]比较 //比较3次,由j控制
 第八趟                a[0]与a[1]比较   a[1]与a[2]比较                    //比较2次,由j控制
 第九趟                a[0]与a[1]比较                                    //比较1次,由j控制




//选择排序法
#include 
int main()
{
   int i,j,t,a[10];
   for(i=0;i<10;i++)
   {
       scanf("%d",&a[i]);
   }
   for(i=0;i<=8;i++)
   {
       for(j=i;j<=9;j++)
       {
           if(a[i]>a[j])
           {
               t=a[i];
               a[i]=a[j];
               a[j]=t;
           }
       }
   }
   for(j=0;j<10;j++)
   {
       printf("%d\n",a[j]);
   }
    return 0;
}



i表示第几趟
j表示次数第几次:、
也就是说
第一趟(i=0),比较9-i次(9)次 
第二趟(i=1),比较9-i次(8)次 
第三趟(i=2),比较9-i次(7)次 
第四趟(i=3),比较9-i次(6)次 
第五趟(i=4),比较9-i次(5)次 
第六趟(i=5),比较9-i次(4)次 
第七趟(i=6),比较9-i次(3)次 
第八趟(i=7),比较9-i次(2)次 
第九趟(i=8),比较9-i次(1)次 





原理:
每一个数,依次和其他几个数比较,小的数在前,大的数在后;
10个数只需要比较9趟,也就是i走【0~9】趟,j每一趟对应走【0~9-i】次
推广:
n个数比较的话
i走【0~n-1】趟,j每一趟对应走【0~n-1-i】次

 第一趟:              a[0]与a[1]比较   a[0]与a[2]比较  ... a[0]与a[9]比较 //比较9次,由j控制
 第二趟                a[1]与a[2]比较   a[1]与a[3]比较  ... a[1]与a[9]比较 //比较8次,由j控制
 第三趟                a[2]与a[3]比较   a[2]与a[4]比较  ... a[2]与a[9]比较 //比较7次,由j控制
 第四趟                a[3]与a[4]比较   a[3]与a[5]比较  ... a[3]与a[9]比较 //比较6次,由j控制
 第五趟                a[4]与a[5]比较   a[4]与a[6]比较  ... a[4]与a[9]比较 //比较5次,由j控制
 第六趟                a[5]与a[6]比较   a[5]与a[7]比较  ... a[5]与a[9]比较 //比较4次,由j控制
 第七趟                a[6]与a[7]比较   a[6]与a[8]比较      a[6]与a[9]比较 //比较3次,由j控制
 第八趟                a[7]与a[8]比较   a[7]与a[9]比较                    //比较2次,由j控制
 第九趟                a[8]与a[9]比较                                    //比较1次,由j控制

你可能感兴趣的:(ACM例题)