一、通过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实现
三、通过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]