首页 > 编程语言 >算法基础大纲(持续更新)

算法基础大纲(持续更新)

时间:2023-03-04 11:55:23浏览次数:50  
标签:sort 大纲 1.3 int 高精度 更新 gap 算法

前言

该文章是我跟着AcWing上买的算法基础课写的笔记。

算法基础课的课程内容如下:

image-20230223152352050

第一章:基础算法

1.1 排序

image-20230224210149765

插入排序

void insert_sort()
{
    for (int i = 1; i < n; i ++ )
    {
        int x = a[i];
        int j = i-1;

        while (j >= 0 && x < a[j])
        {
            a[j+1] = a[j];
            j -- ;
        }
        a[j+1] = x;
    }
}

选择排序

void select_sort()
{
    for (int i = 0; i < n; i ++ )
    {
        int k = i;
        for (int j = i+1; j < n; j ++ )
        {
            if (a[j] < a[k])
                k = j;
        }
        swap(a[i], a[k]);
    }

}

冒泡排序

void bubble_sort()
{
    for (int i = n-1; i >= 1; i -- )
    {
        bool flag = true;
        for (int j = 1; j <= i; j ++ )
            if (a[j-1] > a[j])
            {
                swap(a[j-1], a[j]);
                flag = false;
            }
        if (flag) return;
    }
}

希尔排序

void shell_sort()
{
    for (int gap = n >> 1; gap; gap >>= 1)
    {
        for (int i = gap; i < n; i ++ )
        {
            int x = a[i];
            int j;
            for (j = i; j >= gap && a[j-gap] > x; j -= gap)
                a[j] = a[j-gap];
            a[j] = x;
        }
    }
}

快速排序(有文章)

算法基础1.1.1快速排序

	void quick_sort(int l, int r)
{
    if (l >= r) return ;

    int x = a[l+r>>1], i = l-1, j = r+1;
    while (i < j)
    {
        while (a[++ i] < x);
        while (a[-- j] > x);
        if (i < j) swap(a[i], a[j]);
    }
    sort(l, j), sort(j+1, r);
}

归并排序(有文章)

算法基础1.1.2归并排序

void merge_sort(int l, int r)
{
    if (l >= r) return;
    int temp[N];
    int mid = l+r>>1;
    merge_sort(l, mid), merge_sort(mid+1, r);
    int k = 0, i = l, j = mid+1;
    while (i <= mid && j <= r)
    {
        if (a[i] < a[j]) temp[k ++ ] = a[i ++ ];
        else temp[k ++ ] = a[j ++ ];

    }
    while (i <= mid) temp[k ++ ] = a[i ++ ];
    while (j <= r) temp[k ++ ] = a[j ++ ];
    for (int i = l, j = 0; i <= r; i ++ , j ++ ) a[i] = temp[j];
}

1.2 二分

1.2.1 整数二分

算法基础1.2.1整数二分

1.2.2 浮点数二分

算法基础1.2.2浮点数二分

1.3 高精度

基本思路就是:

  1. 高精度数保存在容器/数组中
  2. 输入的时候用字符串接收
  3. 模拟算法过程
  4. 注意处理前导0

1.3.1 高精度加法

1.3.1 高精度加法

1.3.2 高精度减法

1.3.2 高精度减法

1.3.3 高精度乘法

1.3.3 高精度乘法

1.3.4 高精度除法

1.3.4 高精度除法

标签:sort,大纲,1.3,int,高精度,更新,gap,算法
From: https://www.cnblogs.com/zaughtercode/p/17177999.html

相关文章

  • 算法随想Day29【贪心算法】| LC122买卖股票的最佳时机Ⅱ、LC55-跳跃游戏、LC45-跳跃游
    LC122.买卖股票的最佳时机Ⅱ一旦遇到相比于昨天降价的,就抛出,就购入低价的,直到又遇到下一个滑坡点,又立即抛出,计算收益贪心算法表现在:总是在降价前抛出,获取收益,总是在降价......
  • 梯度提升算法决策过程的逐步可视化
    梯度提升算法是最常用的集成机器学习技术之一,该模型使用弱决策树序列来构建强学习器。这也是XGBoost和LightGBM模型的理论基础,所以在这篇文章中,我们将从头开始构建一个梯度......
  • (二)回溯算法: 组合数
    组合数问题描述给定两个整数n和k,返回范围[1,n]中所有可能的k个数的组合。感悟作为菜鸡的自己,这题一直是自己的心头之恨,上次和好友打比赛,遇到这题直接卡顿,想法......
  • (一)回溯算法
    概念:什么是回溯算法:回溯算法是对问题的一种穷举思想,及对于一些复杂的问题进行解析,一般采用递归,只是对一些穷举进行能优化(修枝),但是本质上还是穷举,原因是没有找到更好的方......
  • 大整数乘法-算法设计与分析
    分治法-大整数乘法输入:正负零不限,两数长度也不限。输入完第一个数后,回车,输入第二个数,回车。输出:两个数相乘的结果实现思路1.用C++实现大整数乘法2.算法性能优化对......
  • Bellman_ford和spfa算法
    Bellman_ford算法bellman_ford算法在要求起点到终点存在负权边,要求在指定k步(这是spfa无法替代的)bellman_ford和spfa都可以判断图中有无负权环......
  • OpenAI Java SDK——chatgpt-java-v1.0.3更新支持GPT-3.5-Turbo,支持语音转文字,语音翻
    简介chatgpt-java是一个OpenAI的Java版SDK,支持开箱即用。目前以支持官网全部Api。支持最新版本GPT-3.5-Turbo模型以及whisper-1模型。增加chat聊天对话以及语音文件转文字......
  • 每日算法 230303
    每日算法230303题目1487.保证文件名唯一给你一个长度为n的字符串数组names。你将会在文件系统中创建n个文件夹:在第i分钟,新建名为names[i]的文件夹。由于两......
  • JVM系统优化实践(7):垃圾回收器与垃圾回收算法
    您好,我是湘王,这是我的51CTO博客,欢迎您来,欢迎您再来~上回说到了年轻代、老年代与数据计算的一个案例。接下来就先讲一讲年轻代和老年代的两个垃圾回收器:ParNew和CMS。和Serial......
  • One UI 5.1 更新来了
    之前一直在关注OneUI5.0里提到的视频通话背景功能模块,结果5.0版本推送的时候没有引入,有先行者计划博主说是5.1里肯定会有的;前一两天OneUI5.1更新来了,然而该功能还是没有......