当前位置: 首页 > article >正文

[数据结构]插入排序(全)

插入排序分为直接插入排序和希尔排序,希尔排序是在直接插入排序的基础上做出的优化版本(原因后面解释)。

代码如下:

//直接插入排序
void InsertSort(int arr[], int sz)
{
	for (int i = 0; i < sz - 1; i++)
	{
		int mark = i;
		int tmp = arr[mark + 1];
		while (mark >= 0)
		{
			if (tmp < arr[mark])
			{
				arr[mark + 1] = arr[mark--];
			}
			else
			{
				break;
			}
			arr[mark + 1] = tmp;
		}
	}
}
//希尔排序
void ShellSort(int arr[], int sz)
{
	int gap = sz;
	while (gap > 1)
	{
		gap = gap / 3 + 1;
		for (int i = 0; i < sz - gap; i++)
		{
			int mark = i;
			int tmp = arr[mark + gap];
			while (mark >= 0)
			{
				if (tmp < arr[mark])
				{
					arr[mark + gap] = arr[mark];
					mark -= gap;
				}
				else
				{
					break;
				}
				arr[mark + gap] = tmp;
			}
		}
	}
}
//打印数组
void Print(int arr[], int sz)
{
	for (int i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
	printf("\n");
}

头文件:

#pragma once
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void InsertSort(int arr[], int sz);
void ShellSort(int arr[], int sz);
void Print(int arr[], int sz);

测试:

a6c57051fffc4a78ac1b87260fe6a2f6.png

因为直接插入排序时间复杂度最好是O(n),最坏是O(n^2),最坏情况是排序对象是降序排列的,希尔通过把排列对象划分成若干部分,这些部分内部进行直接插入排序,粗略把排序对象排列成升序,从而优化排序过程,也即是希尔把直接插入排序的最坏情况避免了。

谢谢观看!

 


http://www.kler.cn/a/378719.html

相关文章:

  • linux系统安装git及git常用命令
  • Docker可视化管理面板DPanel的安装
  • (七)Python运算符和优先级
  • 2024年大厂AI大模型面试题精选与答案解析
  • Three.js简化 WebGL 的使用
  • CSS 超出一行省略号...,适用于纯数字、中英文
  • 宁德时代嵌入式面试题及参考答案(万字长文)
  • Linux驱动开发(3):字符设备驱动
  • Linux系统性能调优
  • 《Java 实现冒泡排序:详细解析与示例代码》
  • Django安装
  • MongoDB Shell 基本命令(三)聚合管道
  • 银河麒麟v10 xrdp安装
  • Tomcat 和 Docker部署Java项目的区别
  • uniapp使用中小问题及解决方法集合
  • ARM base instruction -- bfxil
  • 第五篇: 使用Python和BigQuery进行电商数据分析与可视化
  • 【bug解决】 g++版本过低,与pytorch不匹配
  • 下载安装COPT+如何在jupyter中使用(安装心得,windows,最新7.2版本)
  • postgresql增量备份系列一
  • TensorRT-LLM的k8s弹性伸缩部署方案
  • 数据转换 | Matlab基于SP符号递归图(Symbolic recurrence plots)一维数据转二维图像方法
  • Unity XR Interaction Toolkit 开发教程(4)XR Origin:追踪参考系与相机高度【3.0以上版本】
  • 三层交换技术,eNSP实验讲解
  • 【大模型开发指南】llamaindex配置deepseek、jina embedding及chromadb实现本地RAG及知识库(win系统、CPU适配)
  • Redis系列---数据管理