利用c语言详细介绍下插入排序

devtools/2024/11/24 20:31:51/

    插入排序,被称为直接插入排序。它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增 1 的有序表。

一、图文介绍

    我们还是使用数组【10,5,3,20,1],排序使用升序的方式,小的元素在前,大的元素在后:

1.1,内循环第一遍

    我们第一遍从第二个元素开始往前比较,如果前面元素大于后面元素,则实现交换。

1.2,内循环第二遍

    我们第二遍从第三个元素开始往前比较。

1.3,内循环第三遍

    我们第三遍从第四个元素开始往前比较。

1.4,内循环第四遍

    我们第四遍从第五个元素开始往前比较,最终结束外循环,完成排序。

二、算法实现

2.1,插入排序

    我们用c语言写一个插入排序算法的函数:

int * insertSort(int *arr,int len)
{int preIdx,cur;for(int i=1;i<len;i++) //从第二个元素开始{preIdx = i - 1;cur = arr[i];while(preIdx>=0&&arr[preIdx]>cur) //往前比较,如果前面数据足够大,则完成交换{arr[preIdx+1] = arr[preIdx];preIdx --;}arr[preIdx+1] = cur; //数据最终落位}return arr;
}

2.2,程序测试

int main() {int a[]={10,5,3,20,1};int *p = insertSort(a,5);printf("the array a after sort is ");for(int i=0;i<5;i++){printf("%d ", *(p++));}}


http://www.ppmy.cn/devtools/136636.html

相关文章

【大数据学习 | Spark-Core】yarn-client与yarn-cluster的区别

1. yarn的提交命令 # yarn的提交命令参数 --master yarn #执行集群 --deploy-mode # 部署模式 --class #指定运行的类 --executor-memory #指定executor的内存 --executor-cores # 指定核数 --num-executors # 直接指定executor的数量 --queue # 指定队列 2. yarn-client模式…

【qt】控件QLabel

1.Qlabel QLabel的文本显示 Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);ui->label->setTextFormat(Qt::PlainText);//设置文本格式为纯文本ui->label->setText("这是纯文本");//设置文本内容ui->…

40分钟学 Go 语言高并发:Select多路复用

Select多路复用 学习目标 知识点掌握程度应用场景select实现原理深入理解底层机制channel通信和多路选择超时处理掌握超时控制方法避免阻塞和资源浪费优先级控制理解优先级实现处理多个channel的顺序性能考虑了解性能优化点高并发场景优化 1. Select实现原理 让我们通过一个…

光伏电站项目-视频监控、微气象及安全警卫系统

一、项目背景 近年来&#xff0c;我国光伏发电持续快速发展。截止2019年5月装机总容量超过2.043亿千瓦&#xff0c;技术水平不断提升&#xff0c;成本显著降低&#xff0c;开发建设质量和消纳利用明显改善&#xff0c;在部分地区实现了家庭分布式光伏并入电网&#xff0c;为建…

MATLAB 2024a安装包下载及安装教程

[安装环境]: Win 11/Win 10 MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等。MATLAB的基本数据单位是矩阵&#xff0c;它的指令表达式与数学…

【入门篇】哥德巴赫猜想——多语言求解版

# [NOIP2004 提高组] 津津的储蓄计划 题目描述 津津的零花钱一直都是自己管理。每个月的月初妈妈给津津 300 300 300 元钱&#xff0c;津津会预算这个月的花销&#xff0c;并且总能做到实际花销和预算的相同。 为了让津津学习如何储蓄&#xff0c;妈妈提出&#xff0c;津津…

嵌入式LVGL自定义纯数字键盘

嵌入式LVGL自定义纯数字键盘 一、前言二、设置自定义数字键盘三、使用一、前言 嵌入式UI项目中有时候会使用到纯数字密码的需求,所以打算使用LVGL构建自定义的纯数字键盘。 二、设置自定义数字键盘 参考这个文章,以LV_KEYBOARD_MODE_USER_1为例,增加一个数字键盘,如下图所…

shell

第四章 shell中的变量 4.1 系统变量 1.常用系统变量 $HOME ,$PWD,$SHELL ,$USER 4.2 自定义变量 1.变量值&#xff08;等号两边没有空格&#xff09; 2.撤销变量&#xff1a;unset变量 3.声明静态变量&#xff1a;readonly 变量&#xff0c;注意&#xff1a;不能unset 4.变…