第四章 4.2 时间复杂度

算法

数据结构与算法

算法与数据结构相互依存,例如,寻找数组的最大值,数组就是一种数据结构,寻找最大值的算法是依附于数组的。

时间复杂度

  • T(n):算法中基本操作的重复执行次数。

i = 1;i= 2...... i=10;表示i重复执行赋值了10次,但每次不受数据量的影响,单独赋值。

存在一个函数f(n)和T(n)的走向大概一致,对此相比求极限等于一个常数,说明两者同阶无穷小,所以说f(n)和T(n)是同数量级函数。T(n) = O(f(n))。

  • 只考虑最高次幂就是与f(n)同量级的。

常见的时间复杂度

O(1)

O(1):没有循环体,因为每一个都直接赋值,赋值不会随着数据量的增大而改变速率,所以f(n)是一条直线,是一个常数。

o(log2n)

O(n)

O(nlog2n)

O(n²)

其他

排序算法

冒泡排序

java 复制代码
public class test {
    public static void main(String[] args) {
        int[] arrlist = new int[]{4,7,8,6,1,2,5};
        maopao(arrlist);
        for (int i = 0; i < arrlist.length; i++) {
            System.out.println(arrlist[i]);
        }
    }
    private static void maopao(int[] arr){
       for (int i = 0; i < arr.length-1; i++) { //外层循环几次
           boolean flag = true;
            for (int j = i+1; j < arr.length; j++) {
                if (arr[i] > arr[j]) {
                    int temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                    flag = false;
                }
            }
            if (flag) {
                break;
            }
       }
    }
}

选择排序

从数组中选择最小元素,将它与数组的第一个元素交换位置。再从数组剩下的元素中选择出最小的元素,将它与数组的第二个元素交换位置。不断进行这样的操作,直到将整个数组排序。

java 复制代码
private static void selectOrder(int[] arr){

        for (int i = 0; i < arr.length-1; i++) {
            int min = i;
            for (int j = i+1; j < arr.length; j++) {
                if (arr[j] < arr[min]) {
                    min = j;
                }
            }
            int temp = arr[i];
            arr[i] = arr[min];
            arr[min] = temp;
        }
    }
相关推荐
弗锐土豆2 小时前
使用eclipse、java、maven、j60870、oceanbase按照IEC104协议采集、存储电力数据
java·oceanbase·电表·iec104·抄表
小则又沐风a2 小时前
进程最终篇---进程控制(模拟实现xshell)
java·linux·服务器·前端
番石榴AI2 小时前
JiaJiaOCR-2.2.0:面向Java ocr的开源库
java·ocr
码云骑士3 小时前
【3.Java基础】Java运算符详解:从算数运算到逻辑判断,一篇文章全部掌握
java·开发语言
Web打印3 小时前
HttpPrinter web打印控件 官方文档(https://wiki.httpprinter.com/)快速检索目录
java·javascript·chrome
我登哥MVP3 小时前
Spring Boot 从“会用”到“精通”:内容协商原理
java·spring boot·后端·spring·java-ee·maven·lua
BAGAE3 小时前
FEC-RS前向纠错编码理论及工程实施研究
c语言·c++·qt·算法·决策树·链表
阿旭超级学得完3 小时前
Linux基础指令 四(apt,vim,git,cgdb)
linux·服务器·开发语言·数据结构·c++·git·vim
cfm_29143 小时前
Java JVM 零基础入门
java·jvm
兰令水3 小时前
leecodecode【状态机DP】【2026.6.9打卡-java版本】
java·开发语言·算法