排序算法工具类

/**
 * 排序算法工具类
 */
public class GeneratedArray {

    /**
     *
     * 生成随机长度数组[min,max)
     *
     * @param min 最小值
     * @param max 最大值
     * @param num
     * @return
     */
    public static int[] randomGeneratedArray(int min, int max, int num) {

        //断言判断
        assert max>min:"数组生成范围指定有误";

        int[] arr = new int[num];

        for (int i = 0; i < arr.length; i++) {
            //随机生成[min,max)范围内的数字,并且存放到数组中
            arr[i] = (int) (Math.random() * (max - min)) + min;
        }

        return arr;

    }

    /**
     * 生成一个近乎有序的数组
     * @param n 数组产固定
     * @param swapTimes 随机交换多少个数字
     * @return arr
     */
    public static int[] generateNearlyOrderedArray(int n, int swapTimes){

        int[] arr = new int[n];
        for( int i = 0 ; i < n ; i ++ )
            arr[i] = i;

        for( int i = 0 ; i < swapTimes ; i ++ ){
            int a = (int)(Math.random() * n);
            int b = (int)(Math.random() * n);
            int t = arr[a];
            arr[a] = arr[b];
            arr[b] = t;
        }

        return arr;
    }

    /**
     * 打印数组
     * @param arr 数组
     */
    public static void printArray(int[] arr){
        for(int i:arr){
            System.out.print(i+",");
        }
        System.out.println();
    }

    /**
     * 判断数组是否有序
     * @param arr
     */
    public static void isSorted(int[] arr){
        for(int i = 0;i<arr.length-1;i++){
            if(arr[i]>arr[i+1]){
                System.out.println("数组不是有序");
                return;
            }
        }
        System.out.println("数组有序");
    }

    /**
     * 复制数组
     * @param arr
     * @return
     */
    public static int[] copyArray(int[] arr){
        int[] arrs = new int[arr.length];
        for (int i = 0;i<arrs.length;i++){
            arrs[i] = arr[i];
        }
        return arrs;
    }
}

原文地址:https://www.cnblogs.com/lfdestiny/p/9536846.html

时间: 2024-08-01 10:44:43

排序算法工具类的相关文章

测试排序算法工具类

为了方便测试排序算法,下面展示了一些工具类,在之后的写的排序算法中会用到这些类. 一.随机数组生成类 package sort.util; import java.util.*; public class RandomArrayGenerator { private static int[] array; //校验number是否在数组中 private static boolean isInArray(int number) { boolean isInArray = false; for(i

非对称加密——RSA算法工具类

关于RSA算法的介绍网上一大堆,一句话就是牛B. package com.demo; import org.springframework.util.StringUtils; import javax.crypto.Cipher; import java.security.*; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; import java.secur

核心算法工具类

* <h1>轨迹平滑所需要的工具方法</h1> Date: 2016-10-27 Created by mxdl */public class TrackMoveUtil { private static double DISTANCE = 0.0001; /** * 根据两点算斜率 */ public static double getSlope(LatLng fromPoint, LatLng toPoint) { if (fromPoint == null || toPoin

排序算法整理:冒泡排序、堆排序、插入排序、归并操作、快速排序、希尔排序、选择排序

SortUtils.java package prms.utils.sort; import java.util.Arrays; /** * @ClassName: SortUtils * @Description: <p> 排序算法 工具类 </p> * @author edgar * @email [[email protected]] * @version V 1.0 * @date 2017-3-28 15:35:12 */ public class SortUtils {

详谈排序算法之插入类排序(两种思路实现希尔排序)

1. 排序( sorting) 的功能是将一个数据元素的任意序列,重新排列成一个按关键字有序的序列.其确切的定义为: 假设有n个数据元素的序列{R1 , R2 , - , Rn},其相应关键字的序列是{K1 , K2 , - , Kn} ,通过排序要求找出下标 1 , 2 , - , n的一种排列p1 , p2 , - , pn,使得相应关键字满足如下的非递减(或非递增)关系Kp1 ≤ Kp2 ≤ - ≤ Kpn这样,就得到一个按关键字有序的纪录序列{ Rp1 , Rp2 , - , Rpn }

七大常见排序算法总结

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.04.06 lutianfei none V1.1 2016.07.16 lutianfei 增加了归并排序说明 V2.0 2016.07.19 lutianfei 完善了排序算法的总结 排序另一种分法 外排序:需要在内外存之间多次交换数据才能进行 内排序: 插入类排序 直接插入排序 希尔排序 选择类排序 简单选择排序 堆排序 交换类排序 冒泡排序 快速排序 归并类排序 归并排序 排序方法 平均情况 最好情况 最坏情况

数据结构与算法-排序算法-partial

前言 都什么时代了,还写排序算法的总结? 原因有二.一是别人的精彩永远是别人的,你只有鼓掌的份儿:有些事情实际动手去做了才会有所体会. 二是排序算法是一类基础类的算法,不光是IT从业者真正入门的门槛,也是一些高级算法的关键部分或算法评估的benchmark. 计划说明的算法内容有哪些?  算法的思想.Java代码实现和平均算法复杂度.算法运行完整示例. 参考文献有哪些? wiki[EB/OL] Shaffer C. A. Data Structure and Algorithm Analysis

DotNet常用排序算法总结

数据结构和算法对一个程序来说是至关重要的,现在介绍一下几种算法,在项目中较为常用的算法有:冒泡排序,简单选择排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序等7中算法. 现在介绍选择排序算法,希尔排序算法,快速排序算法. (1).选择排序算法:通过n-i次关键字间的比较,从n-i+1个记录中选择出关键字最小的记录,并和第i(1大于等于i小于等于n)个记录交换. (2).希尔排序:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组.所有距离为d1的倍数的记录放在同一个组中.先在各

各种排序算法汇总

简介 排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列.分内部排序和外部排序.若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序.反之,若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序.内部排序的过程是一个逐步扩大记录的有序序列长度的过程. 将杂乱无章的数据元素,通过一定的方法按关键字顺序排列的过程叫做排序.假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持