iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言之直接插入排序算法的方法
  • 296
分享到

C语言之直接插入排序算法的方法

2024-04-02 19:04:59 296人浏览 安东尼
摘要

目录一、什么是直接插入排序二、代码讲解总结 直接 插入排序 (Straight Insertion Sort)是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从

直接 插入排序 (Straight Insertion Sort)是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。.

废话不多说先看看代码


#define  _CRT_SECURE_NO_WARNINGS 1
//直接插入排序法
#include <stdio.h>
void Compare(int arr[], int len)
{
	int i = 0;
	for (i = 0; i < len-1; i++)//len减一因为要插入的数是i+1
	{
		int M = i;//记录有序列表最后应该元素下标
		int num = arr[i + 1];//要插入的数
		while (M >= 0)
		{
			if (num < arr[M])//继续比较
			{
				arr[M + 1] = arr[M];//交换数值
				M--;
			}
			else
			{
				break;
			}
		}
		arr[M + 1] = num;
	}
}
int main()
{
	int arr[] = { 2,3,4,1,2,34,4,56,3,434,4 };
	int len = sizeof(arr) / 4;
	int i = 0;
	Compare(arr,len);
	for (i = 0; i < len; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

一、什么是直接插入排序

就像玩扑克时相同,假设前n-1项是有序数列,现在将第n项插入其中,使得前n项有序。然后依次进行插入,直到将整个数列全部插入,排序完成。

对于一组数据我们无法得知是否有序,但第一个元素只有一个,所以是有序的,所以将第一个元素作为第一个有序数列。后面的数值依次插入其中·。

二、代码讲解


void Compare(int arr[], int len)

首先创建一个插入排序的函数,需要传入数组和数据个数,因此创建int arr[],int len两个形参。


void Compare(int arr[], int len)
{
	int i = 0;
	for (i = 0; i < len-1; i++)//len减一因为要插入的数是i+1
	{
		int M = i;//记录有序列表最后应该元素下标
		int num = arr[i + 1];//要插入的数
		while (M >= 0)
		{
			if (num < arr[M])//继续比较
			{
				arr[M + 1] = arr[M];//交换数值
				M--;
			}
			else
			{
				break;
			}
		}
		arr[M + 1] = num;
	}
}

因为插入排序是由前一个和后一个数据进行比较的,所以比较次数为(数据个数-1)。


int M = i;//记录有序列表最后应该元素下标
		int num = arr[i + 1];//要插入的数

这里需要前后两个数据比较,且这两个需要比较的数据是变化的,所以创建表示两个数据的变量。


	while (M >= 0)
		{
			if (num < arr[M])//继续比较
			{
				arr[M + 1] = arr[M];//交换数值
				M--;
			}
			else
			{
				break;
			}
		}
		arr[M + 1] = num;

利用循环进行比较,如果后一个数比前一个数小,就交换位置(数值)。如果后一个数比前一个数更大,break跳出循环。

当每一次循环比较到最后一次时,需要将两个数进行最后的交换,因为之前只是将arr[M]的值赋给了arr[M+1],此时需要将arr[M+1]的值赋给arr[M]才算完成数值交换,否则会出现比较数据丢失和重复的问题。此时的M--了的,所以需要M+1得到所需要的数据下标进行交换。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: C语言之直接插入排序算法的方法

本文链接: https://www.lsjlt.com/news/160579.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言之直接插入排序算法的方法
    目录一、什么是直接插入排序二、代码讲解总结 直接 插入排序 (Straight Insertion Sort)是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从...
    99+
    2024-04-02
  • C语言直接插入排序算法
    目录1.算法模板2.算法介绍3.实例总结1.算法模板 void InsertSort(SqList *L) { int j; for (int i = 2; i &l...
    99+
    2024-04-02
  • C语言常见排序算法之插入排序(直接插入排序,希尔排序)
    目录前言一、直接插入排序1.1 基本思想1.2 算法思想1.3 程序实现1.4 直接插入排序的总结二、希尔排序2.1 算法思想2.2 程序实现2.3 希尔排序的特征总结前言...
    99+
    2024-04-02
  • C语言直接插入排序算法介绍
    目录前言一、什么是直接插入排序二、代码讲解总结前言 直接 插入排序 (Straight Insertion Sort)是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序...
    99+
    2024-04-02
  • C语言直接插入排序算法是什么
    这篇文章将为大家详细讲解有关C语言直接插入排序算法是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.算法模板void InsertSort(SqList *L){&...
    99+
    2023-06-26
  • 插入排序算法之希尔排序+直接插入排序
    目录希尔排序一、直接插入排序1. 单趟排序2. 直接插入排序二、希尔排序三、测试希尔排序和直接插入排序性能希尔排序 在介绍希尔排序之前,先了解一下直接插入排序 一、直接插入排序 1....
    99+
    2024-04-02
  • C语言深入浅出讲解直接插入排序算法的实现
    目录直接插入排序1.基本思想2.算法实现3.时间复杂度插入排序分为两种:直接插入排序&希尔排序 直接插入排序 1.基本思想 直接插入排序是一种简单的插入排序算法,其基本思想是...
    99+
    2024-04-02
  • C语言排序算法之选择排序(直接选择排序,堆排序)
    目录前言一、直接选择排序1.1 算法思想1.2 代码实现1.3 直接选择排序的特征总结二、堆排序2.1 什么是堆?2.2 判断是否是堆2.3 向下调整算...
    99+
    2024-04-02
  • Java中插入排序算法之希尔排序+直接插入排序的示例分析
    这篇文章给大家分享的是有关Java中插入排序算法之希尔排序+直接插入排序的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。希尔排序在介绍希尔排序之前,先了解一下直接插入排序一、直接插入排序1. 单趟排序x插...
    99+
    2023-06-25
  • C语言中的直接插入排序(带图详细)
    目录什么是直接插入排序?算法思想实例讲解算法分析时间复杂度空间复杂度稳定性代码实现运行结果总结什么是直接插入排序? 直接插入排序是一种最简单的排序方法,其基本操作是将需要排序的元素插...
    99+
    2022-12-27
    C语言排序 C语言直接插入排序 C直接插入排序
  • 排序算法之插入排序法解析
    目录什么是插入排序法算法优化心得体会什么是插入排序法 插入排序法是一种简单但有效的排序算法,其基本思想是将一个待排序的元素逐个插入到已经排好序的元素序列中,直至所有元素都被插入完成,...
    99+
    2023-08-08
    排序算法 插入排序法
  • C#算法之冒泡排序、插入排序、选择排序
    冒泡排序法 是数组等线性排列的数字从大到小或从小到大排序。 以从小到大排序为例。 数据 11, 35, 39, 30, 7, 36, 22, 13, 1, 38, 26, 18, 1...
    99+
    2024-04-02
  • C语言直接插入排序与希尔排序如何使用
    这篇文章主要讲解了“C语言直接插入排序与希尔排序如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言直接插入排序与希尔排序如何使用”吧!一.直接插入排序1.1直接插入排序引入排序是我...
    99+
    2023-06-30
  • C语言插入排序
    前言: 本文主要讲解插入排序中的直接插入排序和希尔排序。 1、直接插入排序: 1.1基本思想 直接插入排序是一种简单的插入排序法,其基本思想是把待排序的数值按照大小顺序逐个插入到一个已经排好序的有序序列中,直到将所有记录插入完为止,得到一个...
    99+
    2023-09-28
    c语言 排序算法 数据结构
  • 排序算法图解之Java插入排序
    目录1.插入排序简介2.插入排序思想及图解3.插入排序代码实现1.插入排序简介 插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法。插入排序是一种最简单的排序...
    99+
    2022-11-13
    Java 插入排序算法 Java插入排序 Java 排序算法
  • JAVA十大排序算法之插入排序详解
    目录插入排序代码实现动图演示代码实现时间复杂度算法稳定性总结插入排序 当我们在玩扑克牌的时候,总是在牌堆里面抽取最顶部的一张然后按顺序在手中排列。 插入排序是指在待排序的元素中,假设...
    99+
    2024-04-02
  • Java 十大排序算法之插入排序刨析
    目录插入排序原理插入排序API设计插入排序代码实现插入排序的时间复杂度分析插入排序原理 ①把所有元素分成已排序和未排序两组 ②找到未排序组的第一个元素,向已经排序的组中进行插入 ③倒...
    99+
    2024-04-02
  • C语言深入探究直接插入排序与希尔排序使用案例讲解
    目录一.直接插入排序1.1直接插入排序引入1.2直接插入排序的核心思想与算法分析1.3实例说明1.4直接插入排序代码实现1.5直接插入排序性能分析二.希尔排序2.1希尔排序引入2.2...
    99+
    2024-04-02
  • C#实现冒泡排序和插入排序算法
    1.选择排序(冒泡排序) 升序 用第一个元素跟其他元素比较,如果该元素比其他元素,则交换,保证该元素是最小的。然后再用第二个元素跟后面其他的比较,保证第二个元素是除第一个最小的。依次...
    99+
    2024-04-02
  • Python排序算法之插入排序及其优化方案详解
    一、插入排序 插入排序与我们平时打扑克牌非常相似,将新摸到的牌插入到已有的牌中合适的位置,而已有的牌往往是有序的。 1.1 执行流程 (1)在执行过程中,插入排序会将序列分为2部...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作