IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 算法和数据结构体系班 01.认识复杂度、对数器、二分法 -> 正文阅读

[数据结构与算法]算法和数据结构体系班 01.认识复杂度、对数器、二分法

笔记链接:https://www.processon.com/view/link/613702207d9c081c75400c31?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjE2NjQ3Njc4ODQsImZpbGVHVUlEIjoiUXhYOXh5M1Z0VEdQV3BodCIsImlhdCI6MTY2NDc2NzU4NCwiaXNzIjoidXBsb2FkZXJfYWNjZXNzX3Jlc291cmNlIiwidXNlcklkIjotNzIxMzY0MzczNn0.uV8vDWPYvVhF57rQJs-rWXtgRWxoUWkYg8WfJxU2g08#outline(大佬记得笔记,后面只是我自己的查漏补缺)

01.认识复杂度、对数器、二分法

常数时间操作(和数据量有关的操作)
不是常数时间的操作(和数据量无关)

选择排序

在0-n-1个数中遍历,当找到最小的一个数,把它放到第0位
在1-n-1个数中遍历,当找到最小的一个数,把它放到第1位
在2-n-1个数中遍历,当找到最小的一个数,把它放到第2位。

public class code01_SelectionSort {
    public static void selectionSort(int [] arr){
        if(arr==null || arr.length<2){
            return ;
        }
        for(int i=0;i<arr.length;i++){
            int minIndex=i;
            for(int j=i+1;j<arr.length;j++){
                minIndex=arr[j]<arr[minIndex]?j:minIndex;
            }
            swap(arr,i,minIndex);
        }
    }

    public static void swap(int [] arr,int i,int j){
        int temp=arr[i];
        arr[i]=arr[j];
        arr[j]=temp;
    }

    public static void main(String[] args) {
        int []arr={3,5,8,45,1,2};
        selectionSort(arr);
        for (int item:
             arr) {
            System.out.println(item);
        }
    }

}

冒泡排序

比较相邻的两个数,把比较大的一个数往后排,这样排完一次过后最大的数就变成了最右边。

public class Code02_BubbleSort {
    public static void BubbleSort(int [] arr){
        if(arr==null || arr.length<2){
            return ;
        }
        for(int i=arr.length-1;i>0;i--){//循环N-1次就可以完成排序
            for(int j=0;j<i;j++){//放置数组越界
                if(arr[j]>arr[j+1]){
                    swap(arr,j,j+1);
                }
            }
        }

    }
    public static void swap(int [] arr,int m,int q){
        int temp=arr[m];
        arr[m]=arr[q];
        arr[q]=temp;
    }

    public static void main(String[] args) {
        int []arr={3,5,8,45,1,100,2,1,10};
        BubbleSort(arr);
        for (int item:
                arr) {
            System.out.println(item);
        }
    }
}

插入排序 时间复杂度(o(n2)在数据流程最差的时候来表示这个数据)

首先保证下标0位置上有序,然后保证0,1位置上有序,如果后边的比前边的小,就让它前移。
直到保证在0到n上有序。

public class Code03_InsertionSort {

    public static void insertionSort(int []arr){
        if(arr==null ||arr.length<2){
            return ;
        }
        for(int i=1;i<arr.length;i++){
            for(int j=i-1;j>=0&&arr[j]>arr[j+1];j--){
                swap(arr,j,j+1);
            }
        }
    }



    public static void swap(int []arr,int i,int j){
        arr[i]=arr[i]^arr[j];
        arr[j]=arr[i]^arr[j];
        arr[i]=arr[i]^arr[j];
    }

    public static void main(String[] args) {
        int arr[]={3,4,2,1,78,7,15};
        insertionSort(arr);
        for (int i:
           arr  ) {
            System.out.println(i);
        }
    }
}

认识对数器

通过自己编写的随机测试用例来测试程序。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 21:07:02  更:2022-10-08 21:07:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 19:52:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码