直接插入排序

java实现直接插入排序 java实现直接插入排序 一、排序思想 我们假定排序是有小到大排列。直接插入排序的基本思想是:在一个已排好的记录子集的基础上,每一步将下一个待排序的记录有序的插入到已排好的记录子集当中,直接将所有待排记录全部插入位置 例如: 已知待排序的一组记录的初始排列为:{49,38,65,49,76,13,27,52} 假设在排序过程中,前三个记录按关键字递增的次序重新排列,构成了一个含有三个记录的有序序列: {38,49,65} 现在要将第四个记录49插入到上述序列,得到的有序序列: {38,**49,**49,4 阅读详情

学习之后,自己练习手写一下排序算法,加深印象

原理:将一个记录插入到已经排好序的有序表中,从而得到一个新的,记录增1的有序表。在插入过程中,需要与有序表中的数依次比较大小,从而找到新记录的插入位置。

#define MAXSIZE 10
#include <stdio.h>
struct a{
    int array[MAXSIZE];    //数组用于存储排序数据 
    int length;           //用于存储数组长度信息, 
};

void init_array(struct a *L){   //初始化数组 
    int i;
    L->length = MAXSIZE;
    for (i=1;i<L->length;i++){     //索引为0的项留作备用 
        scanf("%d",&(L->array[i]));
    }
}

void swap(struct a *L,int i,int j){   //交换数组项 
    int temp = L->array[i];
    L->array[i] = L->array[j];
    L->array[j] = temp;
}

void print(struct a *L){    //打印数组项 
    int i;
    for (i=1;i<L->length;i++){
        printf("%d ",L->array[i]);
    }
}

void InsertSort(struct a *L){   //排序算法 
    int i,j;
    for (i=2;i<L->length;i++){          //i从2开始,我们假定i=1的数已经放好位置 
        if (L->array[i] < L->array[i-1]){    //如果当前数比已排序的序列的最大数要小,那么需要移动位置后插入该数 
            L->array[0] = L->array[i];          //将当前数赋值给备用数组项,用于之后循环终止条件的判断 
            for (j=i-1;L->array[0] < L->array[j];j--){      //寻找当前数应该插入到序列的位置,并依次将比其大的数后移 
                L->array[j+1] = L->array[j];
            }
            L->array[j+1] = L->array[0];    //插入当前数 
        }
    }
} 

int main(){
    struct a List;
    init_array(&List);
    printf("排序前:");
    print(&List);
    InsertSort(&List);
    printf("\n排序后:");
    print(&List);
    return 0;
}

算法时间复杂度:O(n2)

这里写图片描述

【数据结构】插入排序 — 直接插入排序 ​直接插入排序是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。 阅读详情

相关推荐

STM32 FATFS文件系统按行读取SD卡数据

STM32 SD数据实现按行读取

qq_32216815的博客 7826

排序算法——直接插入排序(图文超详细!)

简介 英文名:Straight Insertion Sort 也是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表 步骤 以下用数组2,5,8,3,6,9,1,4,7为例 从小到大排序 1.先看第一个数,将数组划分为有序和无序部分 首先看第一个数2,一个数必然有序,所以将2划分有序,后面都是无序 2.无序部分的首个插入到有序部分 取出无序部分的首个,在有序部分从后向前比较,插入到合适的位置 3.重复第2步直到无序部分全部插入有序

qq_44616044的博客 19万+

《机器学习》周志华_自学记录

第一章绪论## 1.1引言机器学习所研究的主要内容,是关于在计算机上从数据中产生"模型"(model)的算法,即"学习算法"(learning algorithm).在面对新的情况时(例如看到一个没剖开的西瓜),模型会给我们提供相应的判断(例如好瓜).如果说计算机科学是研究关于"算法"的学问,那么类似的,可以说机器学习是研究关于"学习算法"的学问.## 1.2基本术语:用于预测离散值,例如将样本分为“好瓜”或“坏瓜”。:用于预测连续值,例如西瓜的成熟度(如0.95、0.37)。

2201_75296678的博客 2531

排序算法 —— 直接插入排序(图文超详细)

java 实现七大排序算法中的直接插入排序

超烦豆先森 1万+

高频功率放大器的设计实现

摘 要 随着无线通信技术的高速发展,市场对射频电路的需求越来越大,同时对射频电路的性能要求也越来越高。高频功率放大器是位于无线发射级末端的重要部件,为了弥补信号在无线传输过程中的衰耗,要求发射机具有较大功率的输出,通信距离越远,要求的输出功率越大。在高频范围内,为了获得足够大的高频输出功率,就要采用高频功率放大器。 本次课程设计的高频功率放大器的技术指标包括输出功率、效率、功率增益、由于高频频功率放大器的输出功率比较大,耗能比较多,所以工作效率就显得比较重要。本课程设计的高频功率放大器电路由两极功率放大器

qq_43543515的博客 3万+

mysql笔记:23. 在Mac上安装与卸载MySQL

MySQL对Mac电脑的适配十分强大,再加上Mac本身就是Unix操作系统演化而来的,所以在Mac上安装MySQL的方式有多种。常见的方法有如下三种:DMG、brew、TAR。介绍这些方法前,我们先了解下MySQL安装文件的下载。

斌斌(Java) 2249

直接插入排序-C语言(带图详细)

经典插入排序算法-直接插入排序算法带图详细(动图) 直接插入排序是一种最简单的排序方法,其基本操作是将需要排序的元素插入到已排好的有序表序列中,从而得到一个完整的有序序列。

小陈没烦恼 3万+

【理解机器学习算法】之Clustering算法(Agglomerative Clustering)

是一种层次聚类算法,通过逐步合并或“聚集”它们来构建嵌套聚类。这种方法采用自底向上的方式构建聚类层次:它从将每个数据点作为单个聚类开始,然后迭代合并最接近的聚类对,直到所有数据点合并为一个聚类,或直到达到指定的聚类数量。优点:- 聚合聚类在距离和连接准则的选择上具有多样性,使其适用于各种数据集。- 它产生了一个层次结构,这对于不同规模的聚类数据结构是有信息量的。-缺点:- 对于大数据集来说,它可能计算成本高,因为它需要在每次迭代中计算和更新所有聚类对之间的距离。

Hyman Qiu 2688

【数据结构】八大排序之直接插入排序算法

数据结构基本交换排序算法之直接插入排序排序详解.内容包括:直接插入排序的简介及实现思路,代码实现,优化,最好情况和最坏情况的时间复杂度分析.

C/C++领域,数据结构,linux,MySQl学习者 5115

UG\NX二次开发 获取对象的层、颜色、隐藏状态、线宽、线型、高亮显示状态

获取对象的层、颜色、隐藏状态、线宽、线型、高亮显示状态。

王牌飞行员_里海的博客 1981

代谢组数据分析(十五):基于python语言构建PLS-DA分类预测模型

本教程阐述典型代谢组学数据分析工作流程,用于二元分类结果的研究。流程主要步骤如下:首先从 Excel 表格导入代谢物与实验数据,接着基于汇总 QC 进行数据清洗。随后借助主成分分析可视化检查数据质量,再开展两类单变量统计。之后运用偏最小二乘判别分析(PLS - DA)实施多变量分析,此过程涵盖模型优化(对比 R2 与 Q2)、置换测试及明确模型预测指标、确定特征重要性、对模型预测数据进行可视化。最终将统计表格导出至 Excel 表格,完整呈现从数据导入到分析结果输出的全过程。

专注生信领域 2875

插入排序:直接插入排序、希尔排序

插入排序:直接插入排序、希尔排序

2302_76314368的博客 2752

【网络安全】基于Python的威胁情报自动推送系统设计与实现(含源码)

本文介绍了一个基于 Python 开发的威胁情报自动推送系统的设计与实现。该系统通过集成 AbuseIPDB 威胁情报数据源与即时通讯平台,实现了恶意 IP 地址的自动化采集、筛选与实时推送功能。文章详细阐述了系统的技术架构、核心算法、数据流转过程以及关键代码实现。系统采用多线程并发架构,通过 Long Polling 技术实现实时消息接收,支持自动推送和交互式查询两种工作模式。文章还提供了完整的部署指南和使用说明,包括环境配置、运行方式等内容。

等风来 312

【排序】直接插入排序

直接插入排序

喜欢你,像风走了八千里 不问归期 566

假人有限元模型

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

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

内部排序之直接插入排序

本篇文章的目的是为让大家透彻的理解直接插入排序,直接插入排序作为插入排序的基础,有必要用一种简单易懂的方式让大家去掌握。

weixin_44733562的博客 517

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

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

直接插入排序到希尔排序做的那些改进

彻底弄明白常用的排序算法的基本思想,算法的时间和空间复杂度,以及如何选择这些排序算法,确定要解决的问题的最佳排序算法,已经总结了冒泡排序和其改进后的快速排序算法,直接选择排序和堆排序算法,下面总结直接插入排序到希尔排序做的改进,后面再继续总结归并排序和基数排序。

相信相信的力量 2755

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

直接插入排序和希尔排序

详细讲解排序算法中的直接插入排序和希尔排序

学代码的咸鱼的博客 2493

直接插入排序和简单选择排序

简单选择排序的思想: 简单选择排序的基本思想是每一趟在 n-i+1个记录中选取关键字最小的记录作为有序序列的第i个记录 直接插入排序思想: 基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的,记录加1的有序表。 两者都是第二for循环都是不断查找,一个是不断往后找,一个在当前i,不断往前找。 简单选择排序,就是在当前选择i的时候,从后序的n-i+1个记录中查找最小的那个数,插入当前位...

weixin_39137699的博客 5053

排序(1)——直接插入排序、希尔排序

比方说我们有一个10个数的数组,最大的数在最前面,如果gap取3,最大的数跳3次就可以跳到最后一个位置,而如果gap=1,即是直接插入排序的时候,最大的数要跳10次才能跳到最后。再把7与8比较,不符合升序,8后移一个位置;先将8与9比较,9比8大,不符合升序,此时9向后移一个位置,再把8和6进行比较,符合升序,将8插入到原来9的位置。第三趟排序:此时6,8,9已经有序,要把5插入到合适的位置,把5依次与6,8,9比较,6,8,9都比5大,不符合升序,6,8,9依次后移一个位置,把5插入到原来6的位置。

2302_80106957的博客 830
上一篇: 简单选择排序
下一篇: Javascript学习笔记4 BOM
PAT-python-zjw
博客等级 码龄10年 381粉丝 408原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值