使用java实现冒泡排序算法的性能测试

1 篇文章 0 订阅

Date: 2024.07.12 10:13:41 author: lijianzhan

简述:算法是指在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过程。而冒泡排序则是一种经典的简单的算法。其基本思想是:在待排序的一组数中,将相邻的两个数进行比较,若前面的数比后面的数大就交换两数,否则不交换;如此下去,直至最终完成排序。

随机获取数组长度为1000的初始化动态数组,JAVA编码过程,如下图示例:

package com.sort.wrap;

import java.util.Arrays;
import java.util.Random;

public class NewTestProgram {
    public static void main(String[] args) {

        // 定义数组大小
        int size = 1000;

        // 定义随机数组范围
        int min = 0;
        int max = 10000;

        // 创建Random对象
        Random random = new Random();

        // 创建整数数组并填充随机数
        int[] randomArray = new int[size];
        for (int i = 0; i < size; i++) {
            randomArray[i] = random.nextInt(max - min + 1) + min;
        }
        System.out.println("随机生成的数组:"+ Arrays.toString(randomArray));

        long currentTimeStart = System.currentTimeMillis();
        String newArray = sortOfBubble(randomArray);
        long currentTimeEnd = System.currentTimeMillis();

        long timeConsuming = currentTimeEnd - currentTimeStart;
        System.out.println("冒泡排序消耗时长:"+ timeConsuming + "秒");

        System.out.println("冒泡排序完的数组:"+ newArray);
    }

    /**
     * 冒泡排序
     */
    public static String sortOfBubble(int[] arr) {
        if (arr == null) {
            System.out.println("数组不存在");
        }

        if (arr.length == 0) {
            System.out.println("数组不能为空");
        }

        int num = arr.length;
        for (int i = 0; i < num - 1; i++) {
            for (int j = 0; j < num - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }

        return Arrays.toString(arr);
    }
}

输出的结果为:

"C:\Program Files\Java\jdk-21\bin\java.exe" -Dfile.encoding=GBK "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.4\lib\idea_rt.jar=52029:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.4\bin" -classpath "C:\Program Files\Java\jdk-21;C:\Users\admin\IdeaProjects\test\out\production\test" com.sort.wrap.NewTestProgram
随机生成的数组:[9706, 2826, 3242, 9918, 5699, 1327, 415, 5414, 4055, 3613, 1051, 8359, 2954, 3131, 3537, 5720, 6071, 0, 5158, 6106, 5275, 8180, 5910, 2281, 9752, 1662, 7588, 8081, 7407, 1915, 511, 816, 1785, 2521, 8842, 4823, 4575, 6947, 2202, 7494, 8266, 1495, 431, 9920, 6929, 2217, 7521, 1975, 9859, 8876, 5488, 3430, 2276, 2675, 5448, 3303, 9932, 9773, 2059, 9484, 8005, 8034, 7377, 740, 9988, 6977, 1073, 5198, 9322, 224, 3560, 5041, 8761, 841, 6976, 3117, 3301, 1399, 320, 9201, 6612, 8737, 8458, 7758, 354, 4695, 4418, 6512, 8711, 357, 9026, 7746, 6429, 1864, 6291, 9324, 6498, 8218, 4080, 7986, 8146, 8935, 6242, 3926, 490, 8717, 7518, 8623, 931, 5845, 793, 7754, 1376, 728, 4592, 4072, 2406, 2388, 955, 4799, 6634, 4194, 2670, 5340, 4820, 5652, 1046, 1508, 8729, 4752, 1764, 3279, 977, 1789, 2825, 5552, 8337, 221, 8636, 349, 8419, 119, 4175, 2217, 8835, 5871, 8716, 6550, 7115, 9501, 2238, 5464, 6285, 9294, 7698, 7763, 4515, 5191, 5370, 9085, 2926, 9843, 6729, 514, 986, 6306, 9502, 858, 3200, 2388, 4825, 6039, 6585, 2430, 8119, 2118, 6641, 5981, 460, 334, 8969, 6486, 2415, 4874, 9026, 1936, 3388, 2174, 4723, 1800, 7606, 6208, 5075, 9529, 1745, 1348, 3594, 7021, 9402, 5478, 6144, 9236, 6461, 5172, 8718, 8192, 2196, 2874, 4361, 4812, 9933, 455, 4085, 8316, 7490, 6127, 1346, 6660, 61, 3327, 4817, 7318, 9334, 1778, 9432, 743, 6376, 9854, 2612, 8432, 4922, 7291, 7722, 7047, 8285, 5401, 3816, 7658, 7480, 6214, 1889, 7594, 2524, 5595, 2837, 1603, 6163, 5248, 1749, 7752, 8988, 8987, 7450, 4998, 6676, 6973, 34, 4567, 3690, 9402, 6319, 2602, 2751, 3272, 9674, 3264, 9052, 1693, 6537, 1792, 647, 2198, 4239, 788, 1047, 5474, 1521, 874, 879, 9321, 5878, 9405, 1754, 463, 3925, 194, 1227, 7761, 2011, 4189, 252, 8233, 9302, 5022, 8187, 3046, 5613, 8549, 9246, 9680, 2575, 7602, 338, 4243, 5032, 7016, 5933, 918, 8381, 3059, 8358, 2063, 1097, 9815, 3580, 8342, 1177, 1260, 8281, 4441, 1251, 6634, 3767, 1418, 8839, 3759, 6168, 8495, 8125, 2746, 8885, 3880, 5858, 3074, 1268, 6235, 3128, 1264, 6275, 795, 7881, 1939, 8950, 2419, 2838, 3952, 2063, 4107, 1582, 233, 8980, 8621, 925, 3012, 1544, 9364, 8122, 2847, 821, 5476, 7294, 2940, 6630, 1206, 2539, 211, 4115, 1082, 1975, 3359, 1882, 5151, 1498, 8939, 6854, 9524, 7961, 4587, 5561, 2927, 6248, 1581, 5178, 5830, 1484, 8724, 6122, 9451, 5100, 2981, 641, 1590, 1029, 5125, 6034, 9341, 1408, 9042, 1008, 5372, 2385, 4948, 8642, 6293, 1078, 7100, 6716, 2825, 6637, 907, 5337, 2060, 6536, 6420, 5265, 6964, 7791, 5702, 8970, 6395, 8171, 1061, 8362, 3108, 3603, 7167, 9277, 8241, 1904, 5108, 819, 78, 9113, 3034, 1631, 5790, 6546, 7893, 3524, 5366, 8008, 9998, 7928, 9337, 2871, 4492, 4573, 7507, 9720, 1384, 274, 1417, 5324, 2732, 2727, 8453, 3809, 1868, 9413, 3278, 4206, 9028, 4950, 3055, 8708, 6664, 9106, 3227, 7265, 9327, 6451, 8676, 850, 2388, 4228, 2934, 1497, 8393, 1357, 982, 2068, 6193, 2784, 3074, 1218, 9150, 3303, 6810, 9976, 2400, 7950, 2295, 4788, 5211, 9386, 525, 9794, 149, 7760, 8150, 4517, 9846, 9510, 2198, 3691, 8299, 4461, 2330, 2833, 8001, 9512, 7241, 5474, 3423, 1142, 734, 2025, 8920, 710, 62, 9493, 8113, 639, 3501, 6203, 3716, 7263, 8495, 7071, 2985, 2101, 9728, 8702, 3828, 473, 6493, 3164, 9039, 4493, 5926, 224, 6859, 7934, 5465, 2618, 9809, 1265, 7244, 9573, 7783, 7732, 9266, 2454, 4600, 6744, 2687, 2326, 5599, 7686, 2075, 3429, 2766, 6179, 5004, 3057, 8246, 9852, 8513, 3200, 5861, 969, 6611, 9218, 6613, 3686, 1521, 9761, 3087, 7368, 7493, 7573, 4543, 1248, 5035, 2265, 7663, 7295, 2359, 7838, 9230, 3988, 8764, 4128, 9406, 7253, 1347, 2390, 6624, 1941, 2033, 6466, 6133, 2692, 8618, 3701, 6920, 5542, 9739, 4334, 2122, 7657, 8613, 4703, 151, 8573, 3548, 645, 4755, 6036, 4795, 9922, 1470, 8243, 6677, 7507, 8834, 4000, 1293, 6954, 6315, 8593, 2317, 8017, 5883, 2690, 931, 412, 969, 2974, 4425, 4937, 2152, 2570, 3624, 5744, 9784, 1080, 3720, 7956, 8181, 9086, 1324, 2831, 3853, 6292, 3515, 7473, 3669, 8012, 1011, 5941, 9547, 1022, 9159, 2565, 3972, 3288, 4452, 9233, 3237, 8784, 8544, 623, 5831, 29, 244, 7122, 3760, 6845, 2738, 6035, 1454, 4028, 2311, 1731, 4987, 5789, 9896, 8994, 7989, 7092, 7145, 449, 3761, 29, 931, 8773, 7257, 4321, 5411, 7531, 5008, 2548, 3716, 5812, 3718, 5974, 9621, 1590, 6868, 5969, 6000, 5289, 7121, 4489, 7675, 196, 2272, 4474, 5069, 262, 4167, 6748, 8345, 3895, 5431, 3676, 4861, 4508, 6292, 6211, 677, 7850, 9979, 2327, 117, 3429, 2999, 2689, 2664, 8390, 9740, 7368, 803, 4005, 2350, 6315, 9173, 8058, 5539, 7437, 9177, 2971, 1949, 4562, 7046, 7585, 5332, 2875, 6925, 205, 2815, 9721, 6872, 720, 5462, 2581, 4171, 429, 7527, 1354, 8476, 3922, 7860, 5792, 1214, 3277, 4903, 296, 3532, 7807, 9987, 3235, 7590, 9549, 5277, 5696, 8683, 210, 814, 1991, 7198, 2604, 2667, 8408, 2443, 7866, 6919, 1705, 2605, 5861, 3153, 4814, 9006, 5453, 2340, 1393, 8834, 6324, 115, 1896, 5975, 8609, 8602, 7932, 4237, 658, 8614, 2935, 6243, 4662, 8459, 5979, 2365, 5013, 9128, 5313, 6007, 7805, 2400, 2266, 9216, 9159, 8689, 5369, 7156, 5324, 3991, 6576, 425, 4487, 3940, 266, 3491, 4557, 5246, 9064, 9183, 2909, 5910, 1898, 6867, 9050, 1270, 6355, 3695, 8752, 3835, 3713, 7356, 8895, 607, 8395, 9847, 3137, 5386, 3082, 57, 7117, 7023, 6178, 2535, 6549, 8078, 1518, 8527, 9749, 9379, 2131, 9787, 2502, 3392, 7544, 3004, 8282, 1955, 4498, 4614, 2186, 2740, 8576, 3938, 5848, 3184, 4304, 3320, 9655, 3143, 6645, 5787, 9097, 5743, 1418, 8353, 6892, 9799, 4820, 5946, 546, 3611, 4574, 9065, 2324, 7150, 9373, 6107, 9564, 1807, 3774, 221, 8001, 2872, 9940, 1881, 7717, 3852, 8312, 4401, 9689, 7672, 1535, 6035, 1759, 9018, 9908, 4012, 2653, 9841, 4902, 99, 2507, 2888, 5794, 5771, 9589, 2374, 7635, 1932, 5504, 281, 5760, 8566, 9638, 7666, 4821, 3850, 7780, 7474, 138, 4572, 3932, 9773, 9650, 1434, 8050, 963, 9137, 4700, 6201, 4687, 1992, 4107, 8018, 5430, 7905, 9513, 8793, 1731, 9600, 6234, 4380, 6660, 3134, 9538, 8714, 6054, 3208, 3604, 1070, 1346, 1060, 245, 2398, 6665, 7304, 1762, 5819, 8036, 1417, 1559]
冒泡排序消耗时长:3秒
冒泡排序完的数组:[0, 29, 29, 34, 57, 61, 62, 78, 99, 115, 117, 119, 138, 149, 151, 194, 196, 205, 210, 211, 221, 221, 224, 224, 233, 244, 245, 252, 262, 266, 274, 281, 296, 320, 334, 338, 349, 354, 357, 412, 415, 425, 429, 431, 449, 455, 460, 463, 473, 490, 511, 514, 525, 546, 607, 623, 639, 641, 645, 647, 658, 677, 710, 720, 728, 734, 740, 743, 788, 793, 795, 803, 814, 816, 819, 821, 841, 850, 858, 874, 879, 907, 918, 925, 931, 931, 931, 955, 963, 969, 969, 977, 982, 986, 1008, 1011, 1022, 1029, 1046, 1047, 1051, 1060, 1061, 1070, 1073, 1078, 1080, 1082, 1097, 1142, 1177, 1206, 1214, 1218, 1227, 1248, 1251, 1260, 1264, 1265, 1268, 1270, 1293, 1324, 1327, 1346, 1346, 1347, 1348, 1354, 1357, 1376, 1384, 1393, 1399, 1408, 1417, 1417, 1418, 1418, 1434, 1454, 1470, 1484, 1495, 1497, 1498, 1508, 1518, 1521, 1521, 1535, 1544, 1559, 1581, 1582, 1590, 1590, 1603, 1631, 1662, 1693, 1705, 1731, 1731, 1745, 1749, 1754, 1759, 1762, 1764, 1778, 1785, 1789, 1792, 1800, 1807, 1864, 1868, 1881, 1882, 1889, 1896, 1898, 1904, 1915, 1932, 1936, 1939, 1941, 1949, 1955, 1975, 1975, 1991, 1992, 2011, 2025, 2033, 2059, 2060, 2063, 2063, 2068, 2075, 2101, 2118, 2122, 2131, 2152, 2174, 2186, 2196, 2198, 2198, 2202, 2217, 2217, 2238, 2265, 2266, 2272, 2276, 2281, 2295, 2311, 2317, 2324, 2326, 2327, 2330, 2340, 2350, 2359, 2365, 2374, 2385, 2388, 2388, 2388, 2390, 2398, 2400, 2400, 2406, 2415, 2419, 2430, 2443, 2454, 2502, 2507, 2521, 2524, 2535, 2539, 2548, 2565, 2570, 2575, 2581, 2602, 2604, 2605, 2612, 2618, 2653, 2664, 2667, 2670, 2675, 2687, 2689, 2690, 2692, 2727, 2732, 2738, 2740, 2746, 2751, 2766, 2784, 2815, 2825, 2825, 2826, 2831, 2833, 2837, 2838, 2847, 2871, 2872, 2874, 2875, 2888, 2909, 2926, 2927, 2934, 2935, 2940, 2954, 2971, 2974, 2981, 2985, 2999, 3004, 3012, 3034, 3046, 3055, 3057, 3059, 3074, 3074, 3082, 3087, 3108, 3117, 3128, 3131, 3134, 3137, 3143, 3153, 3164, 3184, 3200, 3200, 3208, 3227, 3235, 3237, 3242, 3264, 3272, 3277, 3278, 3279, 3288, 3301, 3303, 3303, 3320, 3327, 3359, 3388, 3392, 3423, 3429, 3429, 3430, 3491, 3501, 3515, 3524, 3532, 3537, 3548, 3560, 3580, 3594, 3603, 3604, 3611, 3613, 3624, 3669, 3676, 3686, 3690, 3691, 3695, 3701, 3713, 3716, 3716, 3718, 3720, 3759, 3760, 3761, 3767, 3774, 3809, 3816, 3828, 3835, 3850, 3852, 3853, 3880, 3895, 3922, 3925, 3926, 3932, 3938, 3940, 3952, 3972, 3988, 3991, 4000, 4005, 4012, 4028, 4055, 4072, 4080, 4085, 4107, 4107, 4115, 4128, 4167, 4171, 4175, 4189, 4194, 4206, 4228, 4237, 4239, 4243, 4304, 4321, 4334, 4361, 4380, 4401, 4418, 4425, 4441, 4452, 4461, 4474, 4487, 4489, 4492, 4493, 4498, 4508, 4515, 4517, 4543, 4557, 4562, 4567, 4572, 4573, 4574, 4575, 4587, 4592, 4600, 4614, 4662, 4687, 4695, 4700, 4703, 4723, 4752, 4755, 4788, 4795, 4799, 4812, 4814, 4817, 4820, 4820, 4821, 4823, 4825, 4861, 4874, 4902, 4903, 4922, 4937, 4948, 4950, 4987, 4998, 5004, 5008, 5013, 5022, 5032, 5035, 5041, 5069, 5075, 5100, 5108, 5125, 5151, 5158, 5172, 5178, 5191, 5198, 5211, 5246, 5248, 5265, 5275, 5277, 5289, 5313, 5324, 5324, 5332, 5337, 5340, 5366, 5369, 5370, 5372, 5386, 5401, 5411, 5414, 5430, 5431, 5448, 5453, 5462, 5464, 5465, 5474, 5474, 5476, 5478, 5488, 5504, 5539, 5542, 5552, 5561, 5595, 5599, 5613, 5652, 5696, 5699, 5702, 5720, 5743, 5744, 5760, 5771, 5787, 5789, 5790, 5792, 5794, 5812, 5819, 5830, 5831, 5845, 5848, 5858, 5861, 5861, 5871, 5878, 5883, 5910, 5910, 5926, 5933, 5941, 5946, 5969, 5974, 5975, 5979, 5981, 6000, 6007, 6034, 6035, 6035, 6036, 6039, 6054, 6071, 6106, 6107, 6122, 6127, 6133, 6144, 6163, 6168, 6178, 6179, 6193, 6201, 6203, 6208, 6211, 6214, 6234, 6235, 6242, 6243, 6248, 6275, 6285, 6291, 6292, 6292, 6293, 6306, 6315, 6315, 6319, 6324, 6355, 6376, 6395, 6420, 6429, 6451, 6461, 6466, 6486, 6493, 6498, 6512, 6536, 6537, 6546, 6549, 6550, 6576, 6585, 6611, 6612, 6613, 6624, 6630, 6634, 6634, 6637, 6641, 6645, 6660, 6660, 6664, 6665, 6676, 6677, 6716, 6729, 6744, 6748, 6810, 6845, 6854, 6859, 6867, 6868, 6872, 6892, 6919, 6920, 6925, 6929, 6947, 6954, 6964, 6973, 6976, 6977, 7016, 7021, 7023, 7046, 7047, 7071, 7092, 7100, 7115, 7117, 7121, 7122, 7145, 7150, 7156, 7167, 7198, 7241, 7244, 7253, 7257, 7263, 7265, 7291, 7294, 7295, 7304, 7318, 7356, 7368, 7368, 7377, 7407, 7437, 7450, 7473, 7474, 7480, 7490, 7493, 7494, 7507, 7507, 7518, 7521, 7527, 7531, 7544, 7573, 7585, 7588, 7590, 7594, 7602, 7606, 7635, 7657, 7658, 7663, 7666, 7672, 7675, 7686, 7698, 7717, 7722, 7732, 7746, 7752, 7754, 7758, 7760, 7761, 7763, 7780, 7783, 7791, 7805, 7807, 7838, 7850, 7860, 7866, 7881, 7893, 7905, 7928, 7932, 7934, 7950, 7956, 7961, 7986, 7989, 8001, 8001, 8005, 8008, 8012, 8017, 8018, 8034, 8036, 8050, 8058, 8078, 8081, 8113, 8119, 8122, 8125, 8146, 8150, 8171, 8180, 8181, 8187, 8192, 8218, 8233, 8241, 8243, 8246, 8266, 8281, 8282, 8285, 8299, 8312, 8316, 8337, 8342, 8345, 8353, 8358, 8359, 8362, 8381, 8390, 8393, 8395, 8408, 8419, 8432, 8453, 8458, 8459, 8476, 8495, 8495, 8513, 8527, 8544, 8549, 8566, 8573, 8576, 8593, 8602, 8609, 8613, 8614, 8618, 8621, 8623, 8636, 8642, 8676, 8683, 8689, 8702, 8708, 8711, 8714, 8716, 8717, 8718, 8724, 8729, 8737, 8752, 8761, 8764, 8773, 8784, 8793, 8834, 8834, 8835, 8839, 8842, 8876, 8885, 8895, 8920, 8935, 8939, 8950, 8969, 8970, 8980, 8987, 8988, 8994, 9006, 9018, 9026, 9026, 9028, 9039, 9042, 9050, 9052, 9064, 9065, 9085, 9086, 9097, 9106, 9113, 9128, 9137, 9150, 9159, 9159, 9173, 9177, 9183, 9201, 9216, 9218, 9230, 9233, 9236, 9246, 9266, 9277, 9294, 9302, 9321, 9322, 9324, 9327, 9334, 9337, 9341, 9364, 9373, 9379, 9386, 9402, 9402, 9405, 9406, 9413, 9432, 9451, 9484, 9493, 9501, 9502, 9510, 9512, 9513, 9524, 9529, 9538, 9547, 9549, 9564, 9573, 9589, 9600, 9621, 9638, 9650, 9655, 9674, 9680, 9689, 9706, 9720, 9721, 9728, 9739, 9740, 9749, 9752, 9761, 9773, 9773, 9784, 9787, 9794, 9799, 9809, 9815, 9841, 9843, 9846, 9847, 9852, 9854, 9859, 9896, 9908, 9918, 9920, 9922, 9932, 9933, 9940, 9976, 9979, 9987, 9988, 9998]

进程已结束,退出代码0

使用Debugger方式进行代码追踪,如下图示例:
在这里插入图片描述

总结:得到结果为运行程序执行冒泡排序算法时长为3秒,根据平均运行速度得出时间复杂度是O(n),总结,数组排序方式使用冒泡,循环进行数组的值进行两两交换的排序形式性能较差。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值