认知算法(十一)

简介: 认知算法(十一),一起来学习吧。

嗨,欢迎来到异星球,我是小怪同志。这篇文章主要讲认识算法,请一起学习吧。

一、插入排序

插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

插入排序和冒泡排序一样,也有一种优化算法,叫做拆半插入。

  1. 算法步骤

将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。

从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)

二、代码实现

1.c语言
void insertion_sort(int arr[], int len){

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

}
2.c++
void insertion_sort(int arr[],int len){

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

}

相关文章
带你读《计算思维导论实验 与习题指导》之一:初识计算思维
本书围绕《计算思维导论》主教材,设计了13个实验,并针对前8章内容设计了习题,包括单选题、多选题、填空题、判断题等。通过实验和习题,能帮助学生:了解计算思维的概念和计算机发展简史;理解进制转换、字符编码和中文编码等相关知识,掌握数制转换的方法和口诀;了解计算机硬件并学会配置与组装计算机,同时能够对简单故障进行判断和排除;掌握上网浏览、查询资料、收发电子邮件等信息时代的必备知识,同时学会局域网的搭建、WWW和FTP服务器的构建;掌握利用Access创建数据库的方法,并能初步设计与管理数据库;掌握命题符号化方法,以及基本的推理理论,并能利用真值表、等值演算等方法进行简单的逻辑推理等能力。
|
7月前
|
搜索推荐 Java Shell
8大Java排序方法(由简入繁),有代码详解和原理指导
8大Java排序方法(由简入繁),有代码详解和原理指导
62 0
|
7月前
|
机器学习/深度学习 算法 搜索推荐
【高效率学习】探索最适合你的学习之路:从心理学、动机到教育学的深度解析
【高效率学习】探索最适合你的学习之路:从心理学、动机到教育学的深度解析
168 0
【高效率学习】探索最适合你的学习之路:从心理学、动机到教育学的深度解析
|
机器学习/深度学习 人工智能 运维
异常检测:探索数据深层次背后的奥秘《下篇》
异常检测:探索数据深层次背后的奥秘《下篇》
异常检测:探索数据深层次背后的奥秘《下篇》
|
机器学习/深度学习 运维 资源调度
异常检测:探索数据深层次背后的奥秘《上篇》
异常检测:探索数据深层次背后的奥秘《上篇》
异常检测:探索数据深层次背后的奥秘《上篇》
思维模型No.1|第一性原理(加强版)
思维模型No.1|第一性原理(加强版)
126 0
|
机器学习/深度学习 人工智能 自动驾驶
强化学习从基础到进阶--案例与实践含面试必知必答[10]:模仿学习、行为克隆、逆强化学习、第三人称视角模仿学习、序列生成和聊天机器人
强化学习从基础到进阶--案例与实践含面试必知必答[10]:模仿学习、行为克隆、逆强化学习、第三人称视角模仿学习、序列生成和聊天机器人
强化学习从基础到进阶--案例与实践含面试必知必答[10]:模仿学习、行为克隆、逆强化学习、第三人称视角模仿学习、序列生成和聊天机器人
|
存储 机器学习/深度学习 人工智能
清华最新「持续学习」综述,32页详述持续学习理论、方法与应用综述
清华最新「持续学习」综述,32页详述持续学习理论、方法与应用综述
486 0
清华最新「持续学习」综述,32页详述持续学习理论、方法与应用综述
|
消息中间件 Java 关系型数据库
pmq学习一-一些典型的使用和套路
pmq是信也科技开源的一款消息中间件,虽然没有RocketMQ和Kafka出名,但是里面的代码还是有值得我们学习的地方的。 pmq的源码里面很多套路还是值得学习的,说实话,这些都是可以用到项目里面的。下面的代码来源于pmq。 首先安装好maven、mysql,对下载下拉的包进行打包: 如果遇到时区问题,则可以调整时区问题。 1.MqBootstrapListener 观察者模式的使用
219 0
pmq学习一-一些典型的使用和套路
|
监控 数据可视化 测试技术
软工导第一节课 计算机软件工程学作一个简短的概述,回顾计算机系统发展简史 软件工程的基本原理和方法有概括的本质的认识,详细讲解生命周期相关知识讲解8种典型的软件过程模型
软工导第一节课 计算机软件工程学作一个简短的概述,回顾计算机系统发展简史 软件工程的基本原理和方法有概括的本质的认识,详细讲解生命周期相关知识讲解8种典型的软件过程模型
278 0
软工导第一节课 计算机软件工程学作一个简短的概述,回顾计算机系统发展简史 软件工程的基本原理和方法有概括的本质的认识,详细讲解生命周期相关知识讲解8种典型的软件过程模型