算法与数据结构(持续更新)
2021-03-04 19:29
标签:逻辑 void strong ++ 输出 load main 操作 相减 LinearSearch 输入:数组,和目标元素 输出:目标元素所在的索引;若不存在,返回-1 将具体的类型替换为 将if判断中的 排序就是按照某种逻辑顺序重新排序的过程 首先,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小的元素那么它就和自己进行交换)。再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置,如此往复,直到将整个数组排序。 时间复杂度就是用来方便开发者估算出程序的运行时间 我们该如何估计程序运行时间呢, 假设算法的问题规模为n,那么操作单元数量便用函数f(n)来表示 随着数据规模n的增大,算法执行时间的增长率和f(n)的增长率相同,这称作为 复杂度分析:表示算法的性能、算法运行的上界 如:T= 5n + 2? T = c1 * n + c2 中c1,c2是常数 表示为O(n) 使用java的时间戳方法 使用线性查找的方式进行性能测试 算法与数据结构(持续更新) 标签:逻辑 void strong ++ 输出 load main 操作 相减 原文地址:https://www.cnblogs.com/south-wood/p/14341324.html线性查找
线性查找(1)
题目描述
代码实现
public class LinearSearch {
/**
* 查找数组中16所在的位置
* @param data:数组
* @param target:要查找的数据
* @return
*/
public static int search(int[] data, int target) {
for (int i = 0; i
优化
基本思路
泛型
使其可以适应不同的类型代码实现
public class LinearSearch {
/**
* 查找数组中16所在的位置
*
* @param data:数组
* @param target:要查找的数据
* @return
*/
public static
常见问题
equals
改为 ==
为什么不会报错?int
的包装类就是 Integer
,从 Java 5 开始引入了自动装箱/拆箱机制,使得二者可以相互转换。排序算法
选择排序
public class SelectionSort {
private SelectionSort(){}
/**
* 循环得到最小数
* @param arr 无须数值
*/
public static int[] sort(int[] arr) {
// arr[0...i) 是有序的 arr[i...n) 是无序的
for (int i = 0; i
插入排序法
其他
复杂度分析
我们通常会估计算法的操作单元数量,来代表程序消耗的时间
, 这里我们默认CPU的每个单元运行消耗的时间都是相同的。算法的渐近时间复杂度,简称时间复杂度
,记为 O(f(n))常数不重要
,复杂度描述的是随着数据规模 n 的增大,算法性能的变化趋势性能测试
基本思路
System.nanoTime
定义一个开始时间戳和一个结束时间戳相减得到我们需要的代码执行时间实际演示
public class ArrayGennerator {
private ArrayGennerator(){}
public static Integer[] generateOrderedArray(int n){
Integer[] arr = new Integer[n];
for (int i = 0; i
public class LinearSearch {
public static
下一篇:DAY 29 PYTHON入门