C语言数组方式实现 直接插入,冒泡排序,选择排序

C语言实现10种排序方式 排序方式 冒泡排序 直接插入排序 折半插入排序 希尔排序 选择排序 鸡尾酒排序 堆排序 归并排序 快速排序 计数排序 桶排序 基数排序 1.冒泡排序 算法思路:冒泡排序就是把小的元素往前调或者把大的元素往后调,比较是相邻的两个元素比较,交换也发生在这两个元素之间。 时间复杂度:冒泡排序的最好时间复杂度是O(n),最差时间复杂度是O(n^2)。 代码: void bubble_sort(in... 阅读详情
#include <stdio.h>
#include <stdlib.h>

int bubblesort(int *buf,int len);
//int bubblesort(int buf[]);
int selectsort(int *buf,int len);
//int selectsort(int buf[]);
int insertsort(int *buf,int len);
//int insertsort(int buf[]);
void printbuffer(int *buf,int len);

int main()
{
    int n=0;
    printf("请输入n值:\n");
    scanf("%d",&n);
    getchar();
    int arr[n];
    int i=0;
    for(i=0;i<n;i++)
    {
        scanf("%d",&arr[i]);
    }
    int select=0;
    while(1)
    {
        printf("请选择排序算法:\n");
        printf("1:冒泡排序\n2:选择排序\n3:直接插入排序\n0:退出\n");
        scanf("%d",&select);
        switch(select)
        {
            case 1:
                printbuffer(arr,n);
                bubblesort(arr,n);
                printbuffer(arr,n);
                break;
            case 2:
                printbuffer(arr,n);
                selectsort(arr,n);
                printbuffer(arr,n);
                break;
            case 3:
                printbuffer(arr,n);
                insertsort(arr,n);
                printbuffer(arr,n);
                break;
            case 0:
                exit(0);
            default:
                printf("input number error\n");        
        }
    }
    return 0;
}

int bubblesort(int *buf,int len)
{
    int i=0;
    int j=0;
    int tmp=0;
    for(i=1;i<len;i++)
    {
        for(j=0;j<len-i;j++)
        {
            if(buf[j]>buf[j+1])
            {
                tmp=buf[j];
                buf[j] = buf[j+1];
                buf[j+1]=tmp;
            }
        }
    }
    //printbuffer(buf,len);
    return 0;
}
int selectsort(int *buf,int len)
{
    int i=0;
    int j=0;
    int k=0;
    int t=0;
    for(i=0;i<len-1;i++)
    {
        k=i;
        for(j=i+1;j<len;j++)
        {
            if(buf[k]>buf[j])
            {
                k=j;
            }
        }
        if(k!=i)
        {
            t=buf[k];
            buf[k]=buf[i];
            buf[i]=t;
        }
    }

    return 0;
}
int insertsort(int *buf,int len)
{
    int i=0;
    int j=0;
    int t=0;
    for(i=1;i<len;i++)
    {
        t=buf[i];
        for(j=i-1;j>=0;j--)
        {
            if(buf[j]>t)
            {
                buf[j+1]=buf[j];
            }
            else
            {
                break;
            }
        }
        buf[j+1]=t;
    }
    return 0;
}
void printbuffer(int *buf,int len)
{
    int i=0;
    for(i=0;i<len;i++)
    {
        printf("%d ",buf[i]);
    }
    printf("\n");
}
冒泡,选择,插入排序算法c语言实现 冒泡排序算法选择排序算法插入排序c语言实现 立即下载

相关推荐

直接插入排序/快速排序/选择排序/冒泡排序(详细实现算法和性能比较)

数据结构---直接插入排序/快速排序/选择排序/冒泡排序(详细实现算法和性能比较)

C语言实现直接插入排序,冒泡排序以及二分查找(巩固理解记忆)

C语言实现直接插入排序,冒泡排序以及二分查找(巩固理解记忆)

青松之竹_Java博客 3021

STM32F407 FreeRTOS+LVGL移植实战:从驱动适配到性能优化

本文详细介绍了在STM32F407开发板上移植FreeRTOS和LVGL的实战经验,涵盖硬件准备、驱动适配、性能优化等关键步骤。通过TFTLCD屏幕驱动优化、DMA加速和任务优先级调整,显著提升界面流畅度,为嵌入式GUI开发提供实用解决方案。

weixin_29190651的博客 632

C语言实现数组快速排序算法

C语言实现数组快速排序算法 快速排序算法,顾名思义,是迄今为止发现的速度最快的排序算法。快速排序算法采用分治的思想,首先在要排序的序列{5,8,7,6,4,3,9}中选取一个基准数(一般选取序列的第一个,其实选取哪个是无关紧要的),将序列分成两部分,其中基准数的左边全是小于基准数的数,基准数右边是大于或者等于基准数的数。这样,基准数的位置在序列中的位置就固定了,然后将基准数两边的序列进行相同的处

心清的专栏 1万+

大疆航线文件解析指南:5分钟搞懂KMZ里的template.kml和waylines.wpml区别

本文深入解析大疆无人机航线文件KMZ中template.kml与waylines.wpml的核心区别。template.kml是定义任务框架和全局参数的可编辑模板,而waylines.wpml是包含精确执行指令的最终文件。理解两者差异对于高效规划航线、批量生成任务及进行二次开发至关重要。

sun99的博客 866

AES-GCM加密认证模式:原理、优势与实战应用

在数据安全领域,加密与认证是保障信息机密性和完整性的两大基石。加密确保数据内容不被窃取,而认证则验证数据来源的真实性和传输过程中是否被篡改。传统的加密后认证方案如AES-CBC+HMAC需要串行处理,性能开销较大。GCM(伽罗瓦/计数器模式)作为一种认证加密(AEAD)方案,巧妙地将AES-CTR加密与基于伽罗瓦域的GHASH认证并行结合,实现了单次数据遍历即可同时完成加密和认证,大幅提升了处理效率。其核心价值在于高性能、支持附加认证数据(AAD)以及标准化程度高,广泛应用于TLS协议、无线网络安全和云存储

weixin_28622215的博客 313

插入排序 --- 附图解(C语言)

中文名:插入排序英文名:Insertion sort时间复杂度:O(N^(1-2))稳定性:稳定的排序算法原理:在待排序的数组里,从数组的第二个数字开始,通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序的优点:如果是进行相对有序的数组,效率会非常高。不占额外空间,是一种稳定的算法,编写过程也相对简单,时间复杂度高。插入排序的缺点:遇到数据过多的情况下不是很适用。最后到这里,文章就结束了,如果在内容上有问题,恳请各位大佬指出。

m0_64681789的博客 2万+

手把手教你用示波器抓取MIPI D-PHY波形:从LP11到HS Burst的完整信号解析

本文详细介绍了使用示波器精准捕获MIPI D-PHY信号的关键技巧,包括探头选择、示波器参数设置、信号状态解析及高级触发配置。通过实战案例和波形分析,帮助工程师快速识别从LP11到HS Burst的各种信号状态,解决常见的信号完整性问题,提升调试效率。

weixin_30471561的博客 560

C语言插入排序

插入排序是指在待排序的元素中,假设前面n-1(其中n>=2)个数已经是排好顺序的,现将第n个数插到前面已经排好的序列中,然后找到合适自己的位置,使得插入第n个数的这个序列也是排好顺序的。 按照此法对所有元素进行插入,直到整个序列排为有序的过程,称为插入排序 ....

m0_63089658的博客 8777

数字取证双雄:Passware Kit Forensic 与 ElcomSoft 在实战场景下的能力边界解析

本文深入解析了Passware Kit Forensic与ElcomSoft在数字取证实战中的能力边界,涵盖Windows、macOS、iOS和Android系统的密码恢复与数据提取技术。通过真实案例对比两款工具在硬件加速、分布式计算及云取证等场景下的表现差异,为取证专家提供关键决策参考。特别探讨了密码恢复软件在加密设备突破中的核心作用。

weixin_30342209的博客 399

皮肤病识别 - 使用DenseNet或EfficientNet模型在ISIC数据集上进行皮肤病识别任务

在本篇博客中,我们探讨了如何使用 DenseNet 和 EfficientNet 模型在 ISIC 数据集上进行皮肤病识别任务。我们加载了数据集,并进行了预处理。然后我们使用 Keras 构建了两个不同的模型,并训练和评估了它们。最后,我们使用训练好的模型对新的皮肤病图像进行了预测。

斌擎科技 1305

【排序算法】插入排序(C语言)

插入排序是简单排序算法之一,这里详述了直接插入排序和二分法插入排序的步骤,并实现了代码,供大家学习参考

weixin_52811588的博客 3万+

【AI 赋能:Python 人工智能应用实战】16. BERT微调实战:中文新闻分类全流程(附模型蒸馏+ONNX部署完整代码)

中文新闻分类是NLP领域的经典实用任务,BERT模型凭借双向上下文建模能力,能有效解决中文歧义与长文本依赖问题,但存在推理速度慢、资源占用高的痛点。本文以THUCNews中文新闻数据集为核心,提供从数据预处理、BERT微调、模型蒸馏到生产部署的全流程实操指南。首先详解THUCNews的多编码读取与清洗(解决gbk/utf-8兼容问题);然后实现BERT微调,加入早停机制与混淆矩阵可视化,验证准确率达93.8%;接着用DistilBERT完成模型蒸馏,在仅损失0.6%准确率的前提下,将推理速度提升2.7倍。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1098

Day04:C语言入门必看——数组的定义、使用与排序算法

数组是数据结构的一种,用于存储一定数量的相同类型数据。👉 通俗理解:数组就是一组相同类型变量的集合数组是最基础的数据结构之一同类型、定长、连续存储重点掌握:定义访问初始化遍历排序。

2201_75484820的博客 360

【maven】maven 3.8.1 版本编译java 17的项目报错 java.lang.ExceptionInitializerError to make field private com.s

排查发现一切正常,但是内网就是不行,然后我就想把我的程序从java 11 改成java 17,然后执行编译的时候报错。这个问题是我们内网java代码升级,项目比较复杂,是从java 8 升级到java 17,然后报错。maven-compiler-plugin 3.8.1 版本编译java 17的项目,报错。然后查看一下这个项目的lombok,结果发现还是老的版本。怀疑是不是这个问题呢?使用最新的版本就可以了。

九师兄 780

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

数据结构-排序算法(c语言实现篇)

数据结构中最全的排序算法(C语言实现)

CHAKMING1的博客 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

八种排序算法【C语言实现】

八种排序算法【C语言实现】

2301_80667728的博客 2999

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

C语言最常用的八种排序方式

常用的八种排序算法以及如何选择合适的排序算法

m0_75006599的博客 6623

【数据结构】冒泡,快速,直接插入,归并,选择排序

详细讲解冒泡,快速,直接插入,归并,选择排序

小吉妙妙屋 2294

数据结构:排序详解(使用语言:C语言)

排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次 序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排 序算法是稳定的;否则称为不稳定的。内部排序:数据元素全部放在内存中的排序。外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。

hy____123的博客 2万+

C语言实现12种排序算法

用C语言完整实现12种排序方法

yishuihanq的博客 9335

C语言 几种排序方法(冒泡、选择、插入、归并、快速)

1.冒泡排序 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。 算法步骤 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 执行过程: # include <s

weixin_44636409的博客 1万+

八大排序算法(C语言实现)

本文详细的介绍了常见的7大排序和一个小众的计数排序,介绍了冒泡、选择、插入、希尔、堆排、快排、归并、计数排序,里面都是用C语言编写的,图文并茂,写的非常详细,希望大家进来看完都能有所收获

weixin_47271425的博客 3698

C语言实现八大排序(动画演示)

本文介绍了八大排序算法,并用C语言实现各类排序。运用了初阶的数据结构,与各类排序思想结合实现了高效的排序效率。本文篇幅较长,细节满满,干货多多,动画辅助演示各类排序的过程,帮助读者更好理解,希望本文对大家有所帮助。

Mesar的博客 2685

C语言常见的七种排序(图片+详解)

八种常见的算法以及用c语言进行实现

qq_64840642的博客 4650

冒泡排序,选择排序,直接插入排序,二分查找排序

三个简单排序—冒泡,选择,直接插入排序 以及插入排序的变形--二分插入排序

那些一起做的白日梦,你还记得么 1186
上一篇: 带头节点链表的前插法,后插法,顺序添加法
下一篇: C语言实现约瑟夫环,使用循环单链表和循环数组2种方法
卫水金波
博客等级 码龄12年 73粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值