数据结构与算法(排序算法)

排序的概念

  1. 排序是指将一组数据,按照特定的顺序进行排列的过程。
  2. 这个过程通常是为了使数据更加有序,从而更容易进行搜索、比较或其他操作。

常见的排序算法

插入排序

  1. 把待排序的记录,按其关键码值的大小,逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。
  2. 通俗的来说,就是分为两堆数据,第一堆已经按顺序排列好了,第二堆是无序的,然后从无序数据堆中取出第一个数据插入到第一堆进行排序,一直重复,直到第二堆没有数据。
  3. 我们玩扑克牌时,就用了插入排序的思想。

直接插入排序

cpp 复制代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void InsertSort(int* arr, int n);
void PrintSort(int* arr, int n);

void InsertSort(int* arr, int n)
{
	for (int i = 0; i < n - 1; i++)
	{
		int end = i;//已经排序的序列最后一位的序号
		int tmp = arr[end + 1];//待排序的序列第一位的数值
		while (end >= 0)
		{
			if (arr[end] > tmp)
			{
				arr[end + 1] = arr[end];
				end--;
			}
			else
			{
				break;
			}
		}
		end++;
		arr[end] = tmp;
	}
}

void PrintSort(int* arr, int n)
{
	for (int i = 0; i < n; i++)
	{
		printf("%d ", arr[i]);
	}
	printf("\n");
}

int main()
{
	int arr[] = { 1,5,2,6,8,7,9,3,0,4 };
	int n = sizeof(arr) / sizeof(int);
	PrintSort(arr, n);
	InsertSort(arr, n);
	PrintSort(arr, n);
	return 0;
}

下面是对直接插入排序的总结:

  1. 元素集合越接近有序,直接插入排序算法的时间效率越高。

  2. 时间复杂度(默认最差的情况):O(N^2)。数组有序且为降序的情况下时间复杂度最差。

  3. 空间复杂度:O(1)。

相关推荐
北域码匠3 小时前
高通滤波算法深度解析(High-Pass Filter)
stm32·算法·c#·数字信号处理·嵌入式开发·滤波算法·高通滤波
指掀涛澜天下惊4 小时前
强化学习进阶篇八 策略梯度算法
深度学习·学习·算法·强化学习
乌萨奇也要立志学C++4 小时前
【洛谷】kmp算法
开发语言·算法
禹凕4 小时前
Dijkstra算法详解与应用
python·算法
YaraMemo5 小时前
元启发式算法框架
人工智能·算法·5g·信息与通信·启发式算法·信号处理
weixin_307779135 小时前
一维无粘 Burgers 方程的激波形成问题:MacCormack 格式求解
c++·算法·matlab
HugoStudio_SWAN5 小时前
洛谷 B4500 / B4449 / B3843 凯撒密码、密码强度与密码合规——加密与安全的三道门
c++·学习·程序人生·算法·安全
枫叶林FYL6 小时前
【群体智能集群控制工程实践】第3章 一致性协同算法
算法
禹凕7 小时前
滑动窗口算法实战指南
python·算法
DisonTangor7 小时前
【腾讯混元雪耻归来】 Hy4 preview:770B 参数 MoE 旗舰模型,1M 上下文全面开源
人工智能·算法·开源·aigc·腾讯云·腾讯云ai代码助手