• 冒泡排序实现


    一、通过JavaScript实现

    1.1思路

    通过循环遍历每一项元素,比较当前元素和其他所有未排序的元素,交换位置位置实现排序

    1.2实现

    /**
     * 获取一个随机数 数组
     * @param low 最小值
     * @param high 最大值
     * @param size 随机数个数
     * @returns {any[]} 随机数数组
     * @private
     */
    function _getRandomArray(low, high, size) {
        // 判断参数是否可转换为数字,否则抛出异常
        if ((typeof parseInt(low) != "number") || (typeof parseInt(high) != "number") || (typeof parseInt(size) != "number")) {
            throw new Error("Exist argument is NaN!");
            return;
        }
        let array = new Array(size); // 声明一个size大小的数组
        for (let i = 0; i < size; i++) {  // 生成随机数并赋值给array数组
            array[i] = Math.ceil(Math.random() * high) - low;
        }
        return array;  // 返回该随机数数组
    }
    
    /**
     * 数组排序
     * @param _array
     * @param _asc 升序(默认)
     * @private
     */
    function _bubble(_array, _asc = true) {
        // 判断参数是否合理,否则抛出异常
        if (_array.constructor.name != "Array") {
            throw new Error("The _array must be a Array")
            return;
        }
        // 循环遍历,根据遍历到的元素和尚未排序的元素进行比较
        for (let i = 0; i < _array.length; i++) {
            for (let j = i; j < _array.length; j++) {
                let condition = _asc?(_array[i] > _array[j]):(_array[i] < _array[j]);
                if (condition){
                    let temp = _array[i];
                    _array[i] = _array[j];
                    _array[j] = temp;
                }
            }
        }
    }
    // 随机数组
    let arr = _getRandomArray(10,100,10);
    console.log(arr);  // [10, 44, 18, 64, 17, 37, 21, 6, 39, 52]
    // 排序
    _bubble(arr);  // 升序
    console.log(arr);  // [6, 10, 17, 18, 21, 37, 39, 44, 52, 64]
    _bubble(arr,false);  // 降序
    console.log(arr);  // [64, 52, 44, 39, 37, 21, 18, 17, 10, 6]
    

    二、通过Java实现

    2.1思路

    通过循环遍历每一项元素,比较当前元素和其他所有未排序的元素,交换位置位置实现排序

    2.2实现

    import java.util.Random;
    
    public class Sort {
    
        /**
         * 获取[int]随机数数组
         * @param low  最小值
         * @param high 最大值
         * @param size 元素个数
         * @return [int]随机数数组
         */
        public static int[] getRandomArray(int low, int high, int size) {
            int[] digits = new int[size];
            for (int i = 0; i < size; i++) {
                Random random = new Random();
                int number = random.nextInt(high - low) + low;
                digits[i] = number;
            }
            return digits;
        }
    
        /**
         * int数组排序
         * @param numbers 源数组
         * @param asc     是否升序
         */
        public static void bubble(int[] numbers, boolean asc) {
            for (int i = 0; i < numbers.length; i++) {
                for (int j = 0; j < numbers.length; j++) {
                    boolean condition = asc ? numbers[i] > numbers[j] : numbers[i] < numbers[j];
                    if (condition) {
                        int temp = numbers[i];
                        numbers[i] = numbers[j];
                        numbers[j] = temp;
                    }
                }
            }
        }
    
        public static void main(String[] args) {
            int[] digits = getRandomArray(0, 100, 10);  // 50,58,74,57,58,25,66,47,66,33,
            bubble(digits, true);  // 74,66,66,58,58,57,50,47,33,25,
        }
    }
    
    

    三、通过Python实现

    1.1思路

    通过循环比较每一个元素,交换位置位置实现排序

    1.2实现

    # -*- encode: utf-8 -*-
    import numpy as np
    
    
    def bubble(array, asc=True):
        """
        通过循环比较 交换位置
        :param array: 源列表
        :param asc: 是否升序
        """
        for i in range(array.size):
            for j in range(i, array.size):
                # 排序规则:如果asc为True(默认),则升序,当有比当前元素[i]小的元素[j]时交换顺序;否则,当有比当前[i]元素大的元素[j]时交换顺序
                condition = array[i] > array[j] if asc else array[i] < array[j]
                if condition:
                    temp = array[i]
                    array[i] = array[j]
                    array[j] = temp
    
    
    if __name__ == '__main__':
        # 生成0-100的随机数列表,大小为10
        randint = np.random.randint(100, size=10)  # [95 30 65 98 34 77 29 74 74 64]
        # 调用方法进行排序
        print(randint)  # 源随机列表: [68 47 45 15 15 88 72 89 59 80]
    
        bubble(randint)  # 升序
        print(randint)  # 升序结果: [15 15 45 47 59 68 72 80 88 89]
    
        bubble(randint, False)  # 降序
        print(randint)  # 降序结果: [89 88 80 72 68 59 47 45 15 15]
    
    
  • 相关阅读:
    PHP 支付类库, cURL开源HTTP类库
    sublime text3 批量查找替换文件夹或项目中的字符
    php 腾讯云 对象存储V5版本 获取返回的上传文件的链接方法
    Redis Desktop Manager 利用ssh连接 Redis
    一键PHP/JAVA安装工具 OneinStack
    函数之局部变量和使用global语句
    函数之定义形参
    函数之定义函数
    大数据入门第二十天——scala入门(二)scala基础02
    大数据入门第二十天——scala入门(二)scala基础01
  • 原文地址:https://www.cnblogs.com/langkyeSir/p/13282714.html
Copyright © 2020-2023  润新知