zoukankan      html  css  js  c++  java
  • 【排序基础】3、随机生成排序算法 测试用例

    随机生成算法测试用例

    简单记录-bobo老师的玩转算法系列–玩转算法 -排序基础

    硬编码
    修改一下测试用例

    要自动生成很多很多数 SortTestHelper

    随机生成算法测试用例
    代码实现
    Java的
    SortTestHelper 排序测试辅助类

    package algo;
    
    public class SortTestHelper {
    
        // SortTestHelper不允许产生任何实例
        private SortTestHelper(){}
    
        // 生成有n个元素的随机数组,每个元素的随机范围为[rangeL, rangeR]
        public static Integer[] generateRandomArray(int n, int rangeL, int rangeR) {
    
            assert rangeL <= rangeR;
    
            Integer[] arr = new Integer[n];
    
            for (int i = 0; i < n; i++)
                // + rangeL 偏移  
                arr[i] = new Integer((int)(Math.random() * (rangeR - rangeL + 1) + rangeL));
            return arr;
        }
    
        // 打印arr数组的所有内容
        public static void printArray(Object arr[]) {
    
            for (int i = 0; i < arr.length; i++){
                System.out.print( arr[i] );
                System.out.print( ' ' );
            }
            System.out.println();
    
            return;
        }
    }
    
    

    SelectionSort

    package algo;
    
    import java.util.*;
    
    public class SelectionSort {
    
        // 我们的算法类不允许产生任何实例
        private SelectionSort(){}
    
        public static <T extends Comparable<T>> void sort(T[] arr){
    
            int n = arr.length;
            for( int i = 0 ; i < n ; i ++ ){
                // 寻找[i, n)区间里的最小值的索引
                int minIndex = i;
                for( int j = i + 1 ; j < n ; j ++ )
                    // 使用compareTo方法比较两个Comparable对象的大小
                    if( arr[j].compareTo( arr[minIndex] ) < 0 )
                        minIndex = j;
    
                swap( arr , i , minIndex);
            }
        }
    
        private static void swap(Object[] arr, int i, int j) {
            Object t = arr[i];
            arr[i] = arr[j];
            arr[j] = t;
        }
    
        public static void main(String[] args) {
    
            // 测试排序算法辅助函数
            int N = 20000;
            N = 20 ;
            Integer[] arr = SortTestHelper.generateRandomArray(N, 0, 10000);
            SelectionSort.sort( arr );
            SortTestHelper.printArray(arr);
    
            return;
        }
    }
    
    

    Result

    D:Environmentsjdk-11.0.2injava.exe -javaagent:D:JavaideaIU-2019.2.winlibidea_rt.jar=6615:D:JavaideaIU-2019.2.winin -Dfile.encoding=UTF-8 -classpath D:IdeaProjectsimoocPlay-with-Algorithms2-Sorting-Basicoutproduction3-Selection-Sort-Generate-Test-Cases algo.SelectionSort
    178 967 980 1049 1067 1224 1330 1819 1894 2390 2422 3030 4442 4615 6922 7027 7567 7933 8998 9089 
    
    Process finished with exit code 0
    
    

    C++的

    SortTestHelper.h

    //
    // 排序测试辅助.
    //
    
    
    #ifndef INC_03_SELECTION_SORT_GENERATE_TEST_CASES_SORTTESTHELPER_H
    #define INC_03_SELECTION_SORT_GENERATE_TEST_CASES_SORTTESTHELPER_H
    
    #include <iostream>
    #include <ctime>
    #include <cassert>
    
    using namespace std;
    
    
    namespace SortTestHelper {
    
        // 生成有n个元素的随机数组,每个元素的随机范围为[rangeL, rangeR]
        int *generateRandomArray(int n, int rangeL, int rangeR) {
    
            assert(rangeL <= rangeR);
    
            int *arr = new int[n];
    
            srand(time(NULL));
            for (int i = 0; i < n; i++)
                arr[i] = rand() % (rangeR - rangeL + 1) + rangeL;
            return arr;
        }
    
        // 打印arr数组的所有内容
        template<typename T>
        void printArray(T arr[], int n) {
    
            for (int i = 0; i < n; i++)
                cout << arr[i] << " ";
            cout << endl;
    
            return;
        }
    
    };
    #endif //INC_03_SELECTION_SORT_GENERATE_TEST_CASES_SORTTESTHELPER_H
    
    

    main.cpp

    #include <iostream>
    #include "SortTestHelper.h"
    
    using namespace std;
    
    template<typename T>
    void selectionSort(T arr[], int n){
    
        for(int i = 0 ; i < n ; i ++){
    
            int minIndex = i;
            for( int j = i + 1 ; j < n ; j ++ )
                if( arr[j] < arr[minIndex] )
                    minIndex = j;
    
            swap( arr[i] , arr[minIndex] );
        }
    }
    
    int main() {
    
        // 测试排序算法辅助函数
        int N = 10000;
        int *arr = SortTestHelper::generateRandomArray(N,0,10000);
        selectionSort(arr,N);
        SortTestHelper::printArray(arr,N);
        delete[] arr;
    
        return 0;
    }
    
  • 相关阅读:
    云计算-MapReduce
    云计算--hbase shell
    云计算--hdfs dfs 命令
    云计算--MPI
    jQuery 效果
    jQuery 效果
    JQuery效果隐藏/显示
    JQuery教程
    六级啊啊啊
    jQuery 安装
  • 原文地址:https://www.cnblogs.com/liuawen/p/12310613.html
Copyright © 2011-2022 走看看