c语言排序算法代码

以下是C语言中常见排序算法的实现代码,涵盖冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序等:

一、冒泡排序(Bubble Sort)

通过相邻元素比较交换实现排序,时间复杂度为O(n²)。

void bubble_sort(int arr[], int len) {
    for (int i = 0; i < len - 1; i++) {
        for (int j = 0; j < len - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

二、选择排序(Selection Sort)

每次选择未排序部分的最小元素放到已排序序列末尾,时间复杂度为O(n²)。

void selection_sort(int arr[], int n) {
    for (int i = 0; i < n - 1; i++) {
        int min_idx = i;
        for (int j = i + 1; j < n; j++) {
            if (arr[j] < arr[min_idx]) {
                min_idx = j;
            }
        }
        if (min_idx != i) {
            int temp = arr[i];
            arr[i] = arr[min_idx];
            arr[min_idx] = temp;
        }
    }
}

三、插入排序(Insertion Sort)

通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入,时间复杂度为O(n²)。

void insertion_sort(int arr[], int n) {
    for (int i = 1; i < n; i++) {
        int key = arr[i];
        int j = i - 1;
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j--;
        }
        arr[j + 1] = key;
    }
}

四、希尔排序(Shell Sort)

插入排序的优化版,通过设置间隔序列减少比较次数,时间复杂度为O(n log n)。

void shell_sort(int arr[], int n) {
    for (int gap = n / 2; gap > 0; gap /= 2) {
        for (int i = gap; i < n; i++) {
            int temp = arr[i];
            int j;
            for (j = i; j >= gap && arr[j - gap] > temp; j -= gap) {
                arr[j] = arr[j - gap];
            }
            arr[j] = temp;
        }
    }
}

五、快速排序(Quick Sort)

采用分治法,通过基准元素划分序列,平均时间复杂度为O(n log n)。

void quick_sort(int arr[], int low, int high) {
    if (low < high) {
        int pivot = arr[high];
        int i = low - 1;
        for (int j = low; j < high; j++) {
            if (arr[j] < pivot) {
                i++;
                swap(&arr[i], &arr[j]);
            }
        }
        swap(&arr[i + 1], &arr[high]);
        int pi = i + 1;
        quick_sort(arr, low, pi - 1);
        quick_sort(arr, pi + 1, high);
    }
}

六、归并排序(Merge Sort)

采用分治法,将序列递归分割后合并,时间复杂度为O(n log n)。

void merge(int arr[], int temp_arr[], int left, int mid, int right) {
    int i = left, j = mid + 1, k = left;
    while (i <= mid && j <= right) {
        if (arr[i] <= arr[j]) {
            temp_arr[k++] = arr[i++];
        } else {
            temp_arr[k++] = arr[j++];
        }
    }
    while (i <= mid) {
        temp_arr[k++] = arr[i++];
    }
    while (j <= right) {
        temp_arr[k++] = arr[j++];
    }
    for (i = left; i <= right; i++) {
        arr[i] = temp_arr[i];
    }
}

void merge_sort(int arr[], int temp_arr[], int left, int right) {
    if (left < right) {
        int mid = left + (right - left) / 2;
        merge_sort(arr, temp_arr, left, mid);
        merge_sort(arr, temp_arr, mid + 1, right);
        merge(arr,
本文《c语言排序算法代码》系辅导客考试网原创,未经许可,禁止转载!合作方转载必需注明出处:https://www.fudaoke.com/exam/3029106.html

相关推荐

c语言经典算法100例

​​C语言经典算法100例是编程学习者的核心实践指南,涵盖从基础循环到复杂排序的完整解决方案,通过实际代码演示提升逻辑思维与编程能力。​ ​ 这些案例不仅帮助理解语法结构,更能培养解决实际问题的思维模式,例如斐波那契数列、素数检测等经典问题均通过简洁的C语言实现。 ​​算法分类与核心价值​ ​ 案例覆盖排序(冒泡、快速排序)、查找、递归、数学运算等类别,每个算法均附完整代码与注释。例如

2025-05-12 人工智能

c语言100个经典算法

掌握C语言100个经典算法 不仅是编程技能提升的关键,更是理解计算机科学核心概念的基石。这些算法覆盖了从基础排序到高级动态规划等多个领域,为学习者提供了全面而深入的知识体系。通过系统地学习和实践这些算法,不仅能增强逻辑思维能力,还能提高解决实际问题的效率。 经典算法中的排序算法是不可或缺的一部分,如冒泡排序、选择排序、插入排序等,它们是初学者入门时必须掌握的基础

2025-05-12 人工智能

c语言100题库

​​C语言100题库是编程学习者的高效训练工具,通过系统化的题目覆盖语法基础、算法逻辑和实战应用,帮助用户快速掌握核心知识点并提升代码能力。​ ​ 题库设计遵循从易到难的原则,结合经典题型和实际开发场景,​​重点强化指针、内存管理、文件操作等难点内容​ ​,同时提供多样化的解题思路和优化方案。 题库内容需严格遵循C语言标准规范,确保每道题目的​​准确性和实用性​ ​。例如,包含基础的温度转换程序

2025-05-12 人工智能

最大子段和算法c语言

最大子段和问题在C语言中有多种解法,以下是主要方法及实现: 一、动态规划法(Kadane算法) 这是最优解法,时间复杂度为O(n)。 核心思想 :维护当前子段和cursum ,若cursum 为负则重置为0,否则累加当前元素。同时记录最大子段和maxsum 。 实现代码 : #include <stdio.h> int maxSubSum (int *a, int n)

2025-05-12 人工智能

求10个数最大值c语言

在C语言中,求10个数的最大值通常使用一个简单的循环,通过比较每个数来找到最大值。以下是关键代码实现: c # include <stdio.h> int main ( ) { int numbers [ 10 ] ; // 定义一个包含10个整数的数组 int max = numbers [ 0 ] ; // 假设第一个数为最大值 // 循环遍历数组,更新最大值 for (

2025-05-12 人工智能

c语言算法的三种基本结构

C语言算法的三种基本结构是顺序结构、选择结构和循环结构,它们构成了程序逻辑的基础框架,直接影响代码的执行效率和可读性。 顺序结构 程序按代码的书写顺序逐行执行,是最简单的结构。例如,先输入数据再计算最后输出结果,步骤之间无跳转。这种结构逻辑清晰,但缺乏灵活性。 选择结构 通过条件判断(如if-else 或switch )决定执行路径。例如,根据用户输入显示不同提示,适合需要分支处理的场景

2025-05-12 人工智能

c语言计算公式

C语言中常用的计算公式及实现方式如下: 一、基础运算公式 四则运算 使用+ 、- 、* 、/ 运算符实现加、减、乘、除。例如: $$ \text{sum} = \text{num1} + \text{num2} $$ 指数与对数 幂运算:pow(x, y) (需包含math.h ) 平方根:sqrt(x) (需包含math.h ) 三角函数:sin(x) 、cos(x) 、tan(x)

2025-05-12 人工智能

c语言算法的四种方法

在C语言中,算法主要分为‌递推法、递归法、分治法、动态规划法 ‌四种核心方法,每种方法适用于不同的计算场景,能高效解决复杂问题。 ‌递推法 ‌ 通过已知条件逐步推导结果,‌避免重复计算 ‌。例如斐波那契数列的迭代实现,时间复杂度低,适合‌顺序明确的线性问题 ‌。 ‌递归法 ‌ 函数‌自我调用分解问题 ‌,代码简洁但可能堆栈溢出。典型应用如阶乘计算,适合‌问题可拆分为相同子问题 ‌的情况

2025-05-12 人工智能

排序算法十大经典方法c

排序算法是计算机科学中用于将一组数据元素按照特定顺序排列的基础技术,其核心目标是提高数据处理效率。以下将详细介绍十大经典排序算法及其特点、应用场景和适用性。 1. 冒泡排序 特点 :简单易懂,但效率较低,时间复杂度为O(n²)。适用场景 :数据规模较小或几乎已排序的数据。优缺点 :实现简单,但性能较差,不适合大数据集。 2. 选择排序 特点 :每次从未排序部分选择最小(或最大)元素放到已排序部分

2025-05-12 人工智能

堆排序过程图解

堆排序是一种基于二叉堆数据结构的排序算法,其核心思想是通过构建最大堆或最小堆,逐步将最大(或最小)元素移动到数组末尾,最终实现排序。以下是堆排序的详细过程图解及步骤说明: 一、构建最大堆 初始化堆 从数组的最后一个非叶子节点开始,向前遍历每个节点,对每个节点执行“向下调整”操作,确保子树满足最大堆性质(父节点≥子节点)。 向下调整 对于每个节点,比较其与左右子节点的值,若子节点较大则交换

2025-05-12 人工智能

素数c语言程序编写

‌素数C语言程序编写 ‌的关键在于‌高效判断数字是否为素数 ‌,通常采用‌试除法优化 ‌(如仅检查2到√n的整数)或更高级算法(如埃拉托斯特尼筛法)。以下分点详解实现方法: ‌基础试除法 ‌ 从2开始遍历到目标数n-1,若n能被任意数整除则非素数。优化后只需遍历到√n,减少计算量。示例代码: c Copy Code int isPrime (int n) { if (n <= 1

2025-05-12 人工智能

c语言十大排序算法

冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、基数排序、堆排序、计数排序和桶排序是C语言中十大经典排序算法,它们在时间复杂度和空间复杂度上各有特点,适用于不同的场景。 冒泡排序 时间复杂度 :O(n²) 空间复杂度 :O(1) 特点 :通过相邻元素比较和交换,将最小(或最大)元素逐步移动到序列的一端。 适用场景 :数据规模较小或基本有序的序列。 选择排序 时间复杂度 :O(n²)

2025-05-12 人工智能

程序员写代码图片

​​程序员在编写代码时使用图片需兼顾技术优化与EEAT标准,核心在于提升专业性、用户体验和搜索引擎友好性。​ ​高质量的代码图片应清晰展示关键逻辑,避免冗余信息,同时符合Google对内容权威性和可信度的要求。以下是具体实践要点: ​​图片内容与专业性​ ​ 代码截图需突出核心算法或关键模块,避免截取无关界面。示例代码应附带注释说明,体现作者的技术深度。复杂逻辑建议用流程图或架构图辅助说明

2025-05-12 人工智能

程序员被辞后写代码给自己转账

根据权威信息源,程序员马某在被辞退后利用技术手段盗取公司资金的行为已获法律制裁。具体案件信息如下: 一、案件基本事实 时间线 马某于2018年8月入职杭州某网络科技公司,2020年1月被辞退。离职后,他利用原公司系统代码中的微信商户密钥和密码,编写定时转账程序。 转账行为 在2019年10月至2020年8月期间,通过代码累计转账553笔,金额总计21万余元。转账操作隐蔽,每笔金额数百元

2025-05-12 人工智能

零基础如何写代码

​​零基础写代码的关键在于选择合适的学习路径、掌握基础逻辑并持续实践​ ​。​​从HTML/CSS这类标记语言入手​ ​能快速建立成就感,​​Python等易学语言​ ​适合培养编程思维,​​在线平台和社区​ ​提供实时反馈,而​​项目驱动学习​ ​能将知识转化为实际能力。 ​​从可视化工具入门降低门槛​ ​ 使用Scratch或Blockly等图形化编程工具,通过拖拽积木块理解程序逻辑

2025-05-12 人工智能

数控机床程序员多少钱一个月

数控机床程序员的月薪因多种因素而异,通常在5000元至20000元之间。 1. 地区差异 一线城市 :如北京、上海、深圳等地,数控机床程序员的月薪通常较高,平均在10000元至20000元之间。 二线城市 :如杭州、成都、武汉等地,月薪通常在7000元至15000元之间。 三线及以下城市 :月薪相对较低,平均在5000元至10000元之间。 2. 经验水平 初级程序员 :刚入行的数控机床程序员

2025-05-12 人工智能

程序员写代码视频

程序员写代码视频如何做好SEO?关键在于优化视频内容与代码展示的关联性,提升搜索引擎对技术类视频的识别度,同时强化标题、描述和结构化数据的精准匹配。 内容与关键词结合 视频内容需围绕程序员高频搜索的技术点展开,例如“Python实战”“React组件优化”等。在代码演示环节,同步用字幕或旁白解释关键函数和逻辑,便于搜索引擎抓取技术术语。避免纯操作无讲解,确保内容既有实操性又有知识密度。

2025-05-12 人工智能

程序员写的代码是怎么样的

‌程序员写的代码是一系列由特定编程语言编写的指令集合,用于实现软件功能、解决问题或自动化任务。 ‌ 代码的核心特点是‌逻辑性、可读性和可维护性 ‌,通常包含变量、函数、循环和条件语句等基本结构。优秀的代码不仅高效运行,还能被其他开发者轻松理解和修改。 ‌代码的基本结构 ‌ 程序员的代码通常由模块化组件构成,例如: ‌变量 ‌:存储数据的容器(如 int age = 25; )。 ‌函数/方法 ‌

2025-05-12 人工智能

程序员写代码累吗

​​程序员写代码确实会感到累,但累的程度因人而异,主要取决于工作强度、技术挑战、个人习惯等因素。​ ​ ​​关键原因包括:长时间高专注度工作、持续学习压力、复杂问题解决、久坐带来的身体负担等​ ​。不过,热爱编程的人往往能从解决问题和创造中获得成就感,从而抵消部分疲劳感。 ​​高强度脑力消耗​ ​:编程需要持续的逻辑思考和问题解决,尤其是调试复杂代码或优化算法时,脑力负荷极大

2025-05-12 人工智能

程序员编写的代码是什么

程序员编写的代码是用于指导计算机执行特定任务或实现功能的指令集合,其核心作用是将人类需求转化为计算机可理解的操作。以下是具体解析: 定义与本质 代码是程序员使用编程语言编写的指令序列,通过这些指令告诉计算机如何执行操作。例如,计算列表总和、处理用户输入等任务均需通过代码实现。 编程语言与特性 代码支持多种编程语言(如Python、Java、C++等),每种语言具有独特的语法和适用场景。例如

2025-05-12 人工智能
查看更多
首页 顶部