C 语言 冒泡排序

xiaoxiao2021-02-28  99

/* name:冒泡排序   by:fy1    */ #include<stdio.h>  int main() { int arr[]={0,5,6,3,12,7,4,21}; int i=0,j=0; int n=0; int temp=0; int k=0; printf("%d\n",sizeof(arr)/sizeof(int));//测试n的语句 ,n为数组长度  //大--->小 n=sizeof(arr)/sizeof(int); for(j=1;j<=n-1;j++)//此处 用j=1 比用j=0 更好理解; n-1轮   {   for(i=0;i<=n-j-1;i++)//此处是不用i=1 因为 下面:if(arr[i]<arr[i+1]),否则漏掉arr[0];    /* WHY i<=n-j-1   其实so easy: 举个栗子:n=4 第j轮     i需要从0递增到:(即:每轮中i的最大值)                 规律  1            2                                                                             1+2       +1=n=4  2            1                                                                              2+1      +1=n=4 3            0                                                                               3+0      +1=n=4    so......................... ................................       tip:在学习冒泡排序时几乎所有的老师大体上都是这样说的:n个数,要循环n-1 轮,第一轮n-1次,第二轮...  写代码时发现按照这个说法 ,越想越乱......  */            {     if(arr[i]<arr[i+1])        {        temp=arr[i];        arr[i]=arr[i+1];        arr[i+1]=temp;           }        }  }    for(k=0;k<=n-1;k++)    {     printf("M",arr[k]);    } return 0; }

转载请注明原文地址: https://www.6miu.com/read-38352.html

最新回复(0)