当前位置: 首页 > news >正文

C语言【数据结构】:理解什么是数据结构和算法(启航)

引言

        启航篇,理解什么是数据结构和算法

在 C 语言编程领域,数据结构算法是两个核心且紧密相关的概念

一、数据结构

定义

        数据结构是指相互之间存在一种或多种特定关系的数据元素的集合(比如数组),它是组织和存储数据的方式,目的是为了更高效地对数据进行访问、插入、删除、修改等操作。

        不同的数据结构适用于不同的应用场景,合理选择数据结构可以显著提高程序的性能。

下面以数组来理解一下 

例子:数组(Array)

        数组就是一种很简单的数据结构

        数组是一种线性数据结构,它由相同类型的元素组成,这些元素在内存中连续存储。可以通过下标快速访问数组中的任意元素。

#include <stdio.h>

int main() {
    // 定义一个包含5个整数的数组
    int arr[5] = {1, 2, 3, 4, 5};

    // 访问数组元素
    for (int i = 0; i < 5; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    return 0;
}
        当然数据结构还有很多很多,这里是以数组作为一个例子,带你理解数据结构这个定义,如果还是不理解数据结构的话,没关系,当你学了许多数据结构后,你肯定会有理解,这时再看这个定义,就可以联想到那些数据结构,肯定是可以理解的

         数据结合和算法是相互配合使用的,下面来看什么是算法

二、算法

定义

        算法是指解决特定问题的一系列明确的、有限的操作步骤。它是对特定问题求解步骤的一种描述,是指令的有限序列,其中每一条指令表示一个或多个操作。算法具有有穷性、确定性、可行性、输入和输出等特性。

例子1. 排序算法 - 冒泡排序(Bubble Sort)

        冒泡排序是一种简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。

#include <stdio.h>

// 冒泡排序
void bubbleSort(int arr[], int n) {
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

int main() {
    int arr[] = {64, 34, 25, 12, 22, 11, 90};
    int n = sizeof(arr) / sizeof(arr[0]);

    // 调用冒泡排序函数
    bubbleSort(arr, n);

    // 输出排序后的数组
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    return 0;
}

        这里的冒泡排序,就是一种算法,说白了,算法就是解决某个特定类型的问题而写的代码程序

例子2. 搜索算法 - 线性搜索(Linear Search)

        线性搜索是一种简单的搜索算法,它从数组的第一个元素开始,逐个比较元素,直到找到目标元素或遍历完整个数组。

#include <stdio.h>

// 线性搜索
int linearSearch(int arr[], int n, int target) {
    for (int i = 0; i < n; i++) {
        if (arr[i] == target) {
            return i; // 找到目标元素,返回其下标
        }
    }
    return -1; // 未找到目标元素,返回 -1
}

int main() {
    int arr[] = {10, 20, 30, 40, 50};
    int n = sizeof(arr) / sizeof(arr[0]);
    int target = 30;

    // 调用线性搜索函数
    int result = linearSearch(arr, n, target);

    if (result != -1) {
        printf("目标元素 %d 的下标是 %d\n", target, result);
    } else {
        printf("未找到目标元素 %d\n", target);
    }

    return 0;
}

         这里的搜索算法,就是一种算法,是为了解决搜索问题而有的代码

三、数据结构与算法的关系

        数据结构和算法是相辅相成的。

        数据结构是算法实现的基础,不同的数据结构会影响算法的实现方式和效率;

        算法则是对数据结构进行操作的具体步骤,合理的算法可以充分发挥数据结构的优势,提高程序的性能。

        例如,在一个大规模的数据集合中进行查找操作,如果使用数组存储数据,可能使用线性搜索算法,时间复杂度为 O(n);如果使用哈希表这种数据结构,结合哈希查找算法,平均时间复杂度可以达到 O(1)。(看不懂没关系,以后学到了肯定就明白了)。

相关文章:

  • 【从零开始学习计算机科学】数据库系统(七)并发控制技术
  • 【实战ES】实战 Elasticsearch:快速上手与深度实践-8.2.2成本优化与冷热数据分离
  • 什么是SpringCloud?为何要选择SpringCloud?
  • 计算机视觉|首次写入政府工作报告!这个科技新词“具身智能”到底是什么?
  • PHP批量去除Bom头的方法
  • Linux——进程(2)进程的状态
  • 《ECharts :不强不大,做点可视化》
  • AI本地部署
  • Flutter 按钮组件 TextButton 详解
  • 《探秘人工智能与鸿蒙系统集成开发的硬件基石》
  • 重生之我在学Vue--第12天 Vue 3 性能优化实战指南
  • VMWare中的三种网络模式
  • 框架_C语言_数据包解析代码框架
  • 【后端】【django】导出 API 文档的几种方法
  • JavaScript 中的Map
  • LeetCode 112. 路径总和 II java题解
  • CSS的学习
  • QuickAPI 和 DBAPI 谁更香?SQL生成API工具的硬核对比(一)
  • 学习路之TP6 --重写vendor目录下的文件(新建命令)
  • CODESYS RTE之安装及使用的注意事项
  • 什么网站做外贸最多的/舆情通
  • 只做水果的网站/百度关键词排名推广工具
  • 换空间对网站的影响/手游推广个人合作平台
  • 浙江专业网站建设商城供应/企业网站设计价格
  • 重庆网站建设备案/今日桂林头条新闻
  • 开发公司网签物料/seo网页的基础知识