排序算法C语言实现代码

C语言几种排序代码 包括有十种排序方法,有堆排序,归并排序,基排序,简单选择排序,快速排序,冒泡排序等等 立即下载

冒泡排序,选择排序, 归并排序,快速排序,堆排序

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void display(int *arr, int len);

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

void display(int *arr, int len)
{
    int i;
    for (i = 0; i < len; i++) {
        printf("%-4d", arr[i]);
    }

    printf("\n");
}

void select_sort(int *unsort, int len)
{
    int i, j, k;
    for (i = 0; i < len; i++) {
        int tmp;
        k = i;
        for (j = i + 1; j < len; j++) {
            if (unsort[j - 1] < unsort[j]) {
                k = j;
            }
        }
        tmp = unsort[i];
        unsort[i] = unsort[k];
        unsort[k] = tmp;
    }

}    
void merge_sort(int *arr, int p, int q, int r);

void merge(int *arr, int l, int r)
{
    if (l == r) {
        return;
    }
    int pos = (l + r) /2;
    merge(arr, l, pos);
    merge(arr, pos + 1, r);
    merge_sort(arr, l, pos, r);
}

void merge_sort(int *arr, int p, int q, int r)
{
    int *m, *n;
    int i, j;
    int k, l;
    i = q - p + 1;
    j = r - q;
    m = (int *) malloc(i * sizeof(int));
    n = (int *) malloc(i * sizeof(int));
    memcpy(m, arr + p, i * sizeof(int));
    memcpy(n, arr + q + 1, j * sizeof(int));

    k = l = 0;
    while (p <= r) {
        if (k < i && l < j) {
            if (m[k] < n[l]) {
                arr[p++] = m[k++];
            }
            else {
                arr[p++] = n[l++];
            }
        }
        else {
            break;
        }
    }    
    while (k < i) {
        arr[p++] = m[k++];
    }
    while (l < j) {
        arr[p++] = n[l++];
    }
    free(m);
    free(n);
}

int pattern(int *arr, int l ,int r)
{
    int mark = arr[(l + r) / 2];
    
    arr[(l + r) / 2] = arr[l];
    while (l < r) {
        while (l < r && arr[r] < mark ) {
            r--;    
        }
        arr[l++] = arr[r];
        while (l < r && arr[l] > mark ) {
            l++;
        }
        arr[r] = arr[l];
    }
    arr[r] = mark;
    return r;
}


void quick_sort(int *arr, int l, int r)
{
    int k;
    if (l >= r) {
        return;
    }

    k = pattern(arr,  l, r);
    quick_sort(arr, l, k - 1);
    quick_sort(arr, k + 1, r);
}

void adjust_heap(int *arr, int pos, int len);
void create_heap(int *arr, int len)
{
    int i;
    int scope = len / 2;
    while (scope >= 0) {
        adjust_heap(arr, scope--, len);
    }
}

void adjust_heap(int *arr, int pos, int len)
{
    int right, left;
    int k = pos;

    left = 2 * pos;
    right = left + 1;
    
    if (left >= len) {
        return;
    }

    if ( arr[k] < arr[left]) {
        k = left;
    }
    if (right < len && arr[k] < arr[right]) {
        k = right;
    }
    
    if (pos != k) {
        int tmp = arr[k];
        arr[k] = arr[pos];
        arr[pos] = tmp;
        adjust_heap(arr, k, len);
    }    
}
void heap_sort(int *arr, int len)
{
    int tmp;
    create_heap(arr, len);
    while (len > 0) {
        tmp = arr[0];
        arr[0] = arr[len - 1];
        arr[len - 1] = tmp;
        adjust_heap(arr, 0, --len);
    }
}


int main()
{
    int A[] = {5, 12, 2, 3, 7, 3, 24, 12, 11, 23, 1};
    display(A, sizeof(A)/ sizeof(int));

    bubble_sort(A, sizeof(A) / sizeof(int));       // xiao->da        
    display(A, sizeof(A)/ sizeof(int));
    
    select_sort(A, sizeof(A) / sizeof(int));       // da->xiao
    display(A, sizeof(A)/ sizeof(int));
    
    merge(A, 0, sizeof(A) / sizeof(int) - 1);      // xiao->da   
    display(A, sizeof(A)/ sizeof(int));
    
    quick_sort(A, 0, sizeof(A) / sizeof(int) - 1); // da ->xiao
    display(A, sizeof(A)/ sizeof(int));
    
    heap_sort(A, sizeof(A) / sizeof(int));
    display(A, sizeof(A) / sizeof(int));
    return 0;
}    


point transformer v3结构 分割结构: embedding->enc->dec embedding->enc0->enc1->enc2->enc3->enc4->dec3->dec2->dec1->dec0 embedding ->block0->block1 ->dow->block0->block1 ->dow->block0->block1 ->dow->block0->block1-&gt 阅读详情

相关推荐

树莓派国内镜像源一键配置指南

本文提供树莓派国内镜像源一键配置指南,解决默认国外源访问缓慢问题。通过自动检测系统版本并支持清华、阿里云、中科大等主流镜像站选择,大幅提升软件更新与安装速度。包含详细的手动配置方法和常见问题排查,帮助用户快速完成树莓派换源优化。

tequila的博客 1376

排序算法C语言代码

常用算法排序C语言代码

dayslrk的博客 4504

特性阻抗 – SI/PI 世界碰撞的地方

除了谐振零点和峰值外,在一定频率下,传输线的阻抗看起来像远端开路时的电容器的阻抗,也看起来像远端短路时电感的阻抗。如果随后的制造变化将测得的阻抗推到 -10% 容差的低端(例如 44 欧姆)的测量区域内,那么如果在初始下降时测量,则真正的特性阻抗将在 42 欧姆时降低 5%,并且超出规格。这意味着,当我们测量红色或蓝色图的峰和相邻谷之间的中间阻抗时,它是该频率下传输线的特性阻抗。图 7 远端开路时(红色常亮)与远端短路时(蓝色常亮)的电感和电容抗阻抗与频率的关系(上图)和传输线的阻抗与频率(下图)的对比。

jkh920184196的博客 962

6大基础的排序方法(附有c语言代码)

1.简单选择排序 2.插入排序 3.冒泡排序 4.快速排序 5.归并排序 6.堆排序

Brinshy的博客 1077

VCS 2018 环境下,手把手教你用 UVMC 搞定 SystemC 和 SystemVerilog 混合仿真(附完整代码)

本文详细介绍了在VCS 2018环境下使用UVMC实现SystemC和SystemVerilog混合仿真的完整指南。从环境配置、工具链设置到UVMC通信机制解析,提供了实战案例和高级调试技巧,帮助开发者高效搭建复杂验证环境。特别适合需要处理跨语言仿真的芯片验证工程师。

weixin_30952535的博客 285

ANSYS WB 网格划分详解与技巧

本文详细介绍了网格操作中的关键设置与功能选项。主要内容包括:1)网格显示风格与物理偏好设置;2)单元阶次选择对精度的影响;3)单元尺寸控制方法;4)尺寸调整功能,重点讲解了自适应尺寸调整、增长率控制和捕获曲率等选项;5)网格质量评估标准;6)四种主要划分方法(四面体、六面体主导、扫掠、多区域)的特点与适用场景;7)三种尺寸调整方式(直接调整、边缘尺寸调整、影响范围调整)的具体应用。文章强调在实际建模中需要根据模型特点合理选择网格参数,平衡计算精度与效率。

2403_87939837的博客 1698

八大排序算法—源代码(c语言)

插入排序 希尔排序 选择排序 堆排序 冒泡排序 快速排序 归并排序 计数排序八大排序算法,插入排序 希尔排序 选择排序 堆排序 冒泡排序 快速排序 归并排序 计数排序八大排序算法,插入排序 希尔排序 选择排序 堆排序 冒泡排序 快速排序 归并排序 计数排序八大排序算法,插入排序 希尔排序 选择排序 堆排序 冒泡排序 快速排序 归并排序 计数排序八大排序算法,插入排序 希尔排序 选择排序 堆排序 冒泡排序 快速排序 归并排序 计数排序八大排序算法的C语言实现。...

Brant_zero的博客 3657

CMOS锁相环核心:四种鉴频鉴相器(PFD)结构深度剖析与选型指南

本文深入剖析了CMOS锁相环中四种鉴频鉴相器(PFD)的结构与性能,包括传统RS触发器型、非时钟型、预充电型和边沿触发型PFD。通过详细的电路分析、实测数据和工程案例,提供了PFD选型的实用指南,帮助工程师根据速度、功耗和精度需求选择最优方案,提升锁相环设计效率。

weixin_42530458的博客 587

c语言实现各种排序

hi~( ̄▽ ̄)/ 欢迎大家能够点进我的文章٩(๑❛ᴗ❛๑)۶,这一篇,只是我对排序用c语言实现的一些粗糙的想法,讲的就是数据结构里面的选择排序,交换排序,插入排序啦~ヾ(✿゚▽゚)ノ,这里我会尽量用思路加图解的方式将每一个排序大致弄懂的啦~ 还请大家多多支持或者给我指出错误,我们能够一起共同学习呀!φ(>ω..............................

QiHai的博客 1万+

海上风电经柔性直流送出系统的阻抗建模与稳定性分析

摘要 本文针对海上风电经柔性直流送出系统的稳定性问题,提出了一种基于阻抗建模的分析方法。研究建立了直驱永磁同步发电机(PMSG)的序阻抗解析模型和模块化多电平换流器(MMC)的交流侧小信号阻抗模型,通过Matlab/Simulink平台实现了完整的仿真验证系统。采用谐波线性化原理和端口阻抗分析法,揭示了风电机组与柔直换流器之间的阻抗匹配特性对系统稳定性的影响规律。研究结果表明,控制参数设置会显著改变系统阻抗特性,进而影响稳定裕度。文中提出的阻抗建模方法为分析海上风电柔直送出系统的宽频振荡问题提供了有效工具,

huanghm88的专栏 232

Educoder:爬虫实战——求是网周刊文章爬取

第1关:获取新闻url importrequests importre defgeturls(): #**********Begin**********# url='http://www.qstheory.cn/dukan/qs/2014/2019-01/01/c_1123924172.htm' headers={ 'User-Agent':'Mozilla/5.0(Linux;Android6.0;Nexus5Buil...

weixin_46026136的博客 5254

冒泡排序和快速排序

排序算法中重要的两种排序

cjydsg123的博客 576

信息传输仿真:卫星通信系统仿真_(12).基于SystemVue的卫星通信仿真

SystemVue是Cadence公司开发的一款用于系统级设计和仿真的软件工具。它主要用于无线通信系统的设计和验证,特别是在卫星通信、雷达、射频和微波通信等领域。SystemVue提供了一个集成的环境,用户可以通过拖拽和连接各种预定义的模块来构建复杂的通信系统模型,从而进行性能分析和优化。

2401_87715305的博客 1370

七种排序算法的分析和C语言源代码的实现

七种排序算法分析和C源代码的实现 选择排序 首先初始化数组首元素,外循环依次遍历排序数组,内循环再遍历数组,直至尾元素,若遇到需要交换的元素则进行交换,待双循环遍历结束,得到已排序好的数组。 时间复杂度:O(n2) 最坏情况:O(n2) 最好情况:O(n2) 稳定性:稳定 适用于n较小时 #include <stdio.h> #define MAX 50000 int n, a[MA...

Carizy的博客 660

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

排序算法的C语言实现C代码

总结并编写了部分常用的排序算法,包括前向、后向冒泡排序、简单选择排序、直接插入排序、希尔排序、堆排序、并归排序和快速排序。 具体的原理请参考《大话数据结构》。

shiwujigegea的博客 1484

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【经典排序算法】选择排序(动图演示 + C 语言代码实现)

【经典排序算法】选择排序(动图演示 + C 语言实现) 文章目录【经典排序算法】选择排序(动图演示 + C 语言实现)1、动图演示2、排序思想3、时间/空间复杂度4、代码实现 (C语言) 1、动图演示 2、排序思想   每次从待排序的区间中,选择一个最小 (降序) 或最大 (升序) 的数,放在数组的最开头或最后,直到待排序序列的数为0。   具体步骤:第一次从 arr[0] ~ arr[n-1] 中选取最小值,与 arr[0] 交换;        第二次从 arr[1] ~ arr[n-1] 中选取

Sunnyside_ 962

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

选择排序字母串算法c语言,C语言 选择排序算法详解及实现代码

选择排序是排序算法的一种,这里以从小到大排序为例进行讲解。基本思想及举例说明选择排序(从小到大)的基本思想是,首先,选出最小的数,放在第一个位置;然后,选出第二小的数,放在第二个位置;以此类推,直到所有的数从小到大排序。在实现上,我们通常是先确定第i小的数所在的位置,然后,将其与第i个数进行交换。下面,以对 3 2 4 1 进行选择排序说明排序过程,使用min_index 记录当前最小的数所...

weixin_39983384的博客 573

【排序算法】简单选择排序及实例_C语言代码实现_Python代码实现

简单选择排序及实例 C语言代码实现 Python代码实现 简单选择排序 简单选择排序是选择排序的一种。 问:那么什么是选择排序? 答:每趟从待排序的记录中选出关键字最小的元素,顺序放在已排序的记录序列末尾,直到全部排序结束为止。 1 简单选择排序的思想与流程 从上文“什么是选择排序”,引申出简单选择排序的思想; ①从待排序数组元素中,找到值最小的元素; ②将值最小的元素与待排序数组元素的第一个元素互换; ③重复(元素个数-1轮次)①②,至此直到数组元素排序完成。 2 实例介

kt4ngw的博客 4254

【经典排序算法】堆排序(动图演示 + C 语言代码实现)

【经典排序算法】堆排序(动图演示 + C 语言实现) 文章目录【经典排序算法】堆排序(动图演示 + C 语言实现)1、动图演示2、排序思想3、时间/空间复杂度4、代码实现 (C语言) 1、动图演示 2、排序思想   堆它是选择排序的一种,它是通过堆来进行选择数据。(升序要建大堆,降序建小堆)   首先是创建堆,即把待排序的序列转换成堆的形式。然后将根节点与最后一个节点交换。交换之后会打乱堆的规律,需要对前(n-1)个节点进行调整,使之重新成为堆。接下来交换根节点与倒数第二个节点 …… 重复上述调整,直

Sunnyside_ 1347

这是一个用 C 语言实现**选择排序算法**的代码片段,存在一些空缺需要补充完整

到未排序部分的最小(或最大)元素,而冒泡排序在每轮中只能确保最大的元素“冒泡”到正确的位置。 - **适用性**:冒泡排序在数据量较小或基本有序的情况下可能更合适,因为它可以在发现数组已经有序时提前结束。选择排序则适用于需要稳定排序的情况。

[Blog][Domain] programb.blog.youkuaiyun.com 836

详解排序算法C语言代码实现之选择排序法

通过本文大家就知道选择排序法的原理了!

可乐虎博客 1986

几个基本排序算法的代码实现(C语言)

首先,是冒泡排序自顶向下方法#include int main(void) { int a[5],num=5,temp,j,pov=0,i=0; for(i=0;i<5;i++) scanf("%d",&a[i]); while(num!=0){ // pov=a[0]; for(j=0;j<num-1;j++) { if(a[j+1]<a[j]){ tem

jsh0123的博客 312

c语言折半排序的程序,C语言实现九大排序算法的实例代码

直接插入排序将数组分为两个部分,一个是有序部分,一个是无序部分。从无序部分中依次取出元素插入到有序部分中。过程就是遍历有序部分,实现起来比较简单。#include void insertion_sort(int arr[], int array_length) {for (int i = 0; i < array_length; ++i) {int data = arr[i];int j =...

weixin_39792747的博客 410

排序算法之选择排序及其C语言代码实现

概述 一个选择排序是一种简单排序,它的排序思路是:每次从未排序的序列中选出一个最小值,并把它放在已排好序的序列的序尾。这样就形成了一个有序序列(从小到大)。 时间复杂度:o(n^2) 核心代码: void Selection_Sort(int a[],int n) { int i; for(i=0;i<n;++i) ...

areen7003的博客 192

超实用!C语言主流排序算法全解析与代码实现

当谈论主流的排序方法时,通常指的是在实际应用中表现优秀且被广泛采用的排序算法。冒泡排序(Bubble Sort):介绍:冒泡排序是一种简单的交换排序算法。它重复地遍历要排序的列表,依次比较相邻的两个元素,如果顺序不对则交换它们,直到整个列表排好序为止。时间复杂度:平均情况和最坏情况下都是 O(n^2)。空间复杂度:O(1)。代码实现:int temp;i < n - 1;i ++) {j ++) {printf("冒泡排序结果:");i < n;

laterstage的博客 238

常见的排序算法解读与C语言代码实现

1、算法概述 1.1常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。 1.2 算法复杂度 2、冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是..

qq_36993752的博客 182
上一篇: 求子数组的最大和
下一篇: 深入理解ningx, hello world模块代码
smallmelon
博客等级 码龄16年 22粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值