A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wx_byrDDXsc 中级黑马   /  2016-3-25 20:56  /  533 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*


对冒泡排序的理解.

理解:  45,6,56,345,67,64,23,23 从小到大排列.
    第0轮比较:
      拿第0个元素45与第1个元素6比较,如果大,则交换.交换.      6,45,56,345,67,64,23,25
      再拿第1个元素45与第2个元素56比较,如果大,则交换.不交换.  6,45,56,345,67,64,23,25
      再拿第2个元素56与第3个元素345比较,如果大,则交换.不交换. 6,45,56,345,67,64,23,25
      再拿第3个元素345与第4个元素67比较,如果大,则交换.交换.  6,45,56,67,345,64,23,25
      再拿第4个元素345与第5个元素64比较,如果大,则交换.交换.  6,45,56,67,64,345,23,25
      再拿第5个元素345与第6个元素23比较,如果大,则交换.交换.  6,45,56,67,64,23,345,25
      再拿第6个元素345与第7个元素25比较,如果大,则交换.交换.  6,45,56,67,64,23,25,345
    第0轮比较完成.找到第1大的数.比较了7次.
    第1轮比较完成.找到第2大的数.比较了6次.
    第2轮比较完成.找到第3大的数.比较了5次.
    第3轮比较完成.找到第4大的数.比较了4次.
    第4轮比较完成.找到第5大的数.比较了3次.
    第5轮比较完成.找到第6大的数.比较了2次.
    第6轮比较完成.找到第7大的数.比较了1次.

所以规律:
    对于一个长度为len的数组
    一共比较 len - 1 轮
    轮数+次数 = 长度 - 1 ==> 次数 = 长度 - 1 - 轮数


*/
#include <stdio.h>
int main()
{
    //定义数组
    int arr[] = {45,6,56,345,67,64,23,25};
    //定义长度
    int len = sizeof(arr)/sizeof(arr[0]);
    //外层循环控制轮数
    for (int i = 0; i < len - 1; i++)
    {
        //内层循环控制次数
        for (int j = 0; j < len - 1 - i; j++)
        {
            //如果当前元素大于它后面的元素,则交换
            if (arr[j] > arr[j+1])
            {
                int temp = arr[j];
                arr[j] = arr [j+1];
                arr[j+1] = temp;
            }
        }
    }
    //打印数组
    for (int i = 0; i < len; i++)
    {
        printf("%d ",arr);
    }
    return 0;
}


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马