• 【iOS学习笔记】iOS算法(四)之冒泡排序


    冒泡排序法的基本思想:(以升序为例)含有n个元素的数组原则上要进行n-1次排序。对于每一躺的排序,从第一个数开始,依次比较前一个数与后一个数的大小。如果前一个数比后一个数大,则进行交换。这样一轮过后,最大的数将会出现称为最末位的数组元素。第二轮则去掉最后一个数,对前n-1个数再按照上面的步骤找出最大数,该数将称为倒数第二的数组元素......n-1轮过后,就完成了排序。

    /*冒泡排序  分析详解:

         原始数据: 28, 30, 19, 2, 23

         第一趟:

               第一次:28, 30, 19, 2, 23

               第二次:28, 19, 30, 2, 23

               第三次:28, 19, 2, 30, 23

               第四次:28, 19, 2, 23, 30

         第二趟:

               第一次:19, 28, 2, 23, 30

               第二次:19, 2, 28, 23, 30

               第三次:19, 2, 23, 28, 30

         第三趟:

               第一次:2, 19, 23, 28, 30

               第二次:2, 19, 23, 28, 30

         第四趟:

               第一次:2, 19, 23, 28, 30

         */

        //n个元素比较n-1趟

        //每趟比较次数 = 数组元素个数 - 趟数

    代码实现:

        //随机产生一组20个元素的数组取值范围为[20, 40]

        int a[20] = {0};

        printf("随机产生的一个包含20个元素的数组: ");

        for (int i = 0; i < 20; i++) {

            a[i] = arc4random()%(40 - 20 + 1) + 20; //arc4random产生随机数

            printf("%d  ", a[i]);

        }

        for (int i = 0; i < 20 - 1; i++) {              //比较的趟数

            for (int j = 0; j < 20 - 1 - i; j++) {     //每趟比较的次数

                if (a[j] > a[j + 1]) {

                    int temp = a[j];

                    a[j] = a[j + 1];

                    a[j + 1] = temp;

                }

            }

        }

        printf(" 进行冒泡排序,产生一组从小到大顺序的数组: ");

        for (int i = 0; i < 20; i++) {

            printf("%d  ", a[i]);

        }

  • 相关阅读:
    12.如何设置ulimit
    11.vim常用操作
    01Java jdk环境配置
    css
    Html
    day07 Class_field_method_反射
    JDBC
    Oracle day05 索引_数据去重
    Oracle day05 建表_约束
    Oracle day04 DML_事务_序列_视图_数据类型_DDL
  • 原文地址:https://www.cnblogs.com/pjl0426/p/4979259.html
Copyright © 2020-2023  润新知