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

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

排序的概念

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

常见的排序算法

插入排序  

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

直接插入排序 

#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)。


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

相关文章:

  • STM32-C语言基础知识
  • TheadLocal出现的内存泄漏具体泄漏的是什么?弱引用在里面有什么作用?什么情景什么问题?
  • 水母形状电池:助力机器人性能提升
  • 【西瓜书】决策树
  • 网络空间安全之一个WH的超前沿全栈技术深入学习之路(13-2)白帽必经之路——如何用Metasploit 渗透到她的心才不会让我释怀
  • 力扣刷题--42.接雨水【图文详解|超级详细】
  • JAVA项目-------医院挂号系统
  • 鸿蒙征文|鸿蒙技术分享:使用到的开发框架和技术概览
  • 一些k8s和docker的命令
  • javaweb-day03-前端零碎
  • golang 实现比特币内核:如何接入 RPC 后端获得特定交易的二进制数据
  • wxFormBuilder:可视化设计、学习wxWidgets自带UI控件的好工具
  • ML 系列:第 32节 — 机器学习中的统计简介
  • 33 基于单片机的智能窗帘控制系统
  • 分布式链路追踪系统
  • elasticsearch单节点模式部署
  • SAP开发语言ABAP开发入门
  • 试用 Llama-3.1-8B-Instruct AI 模型
  • 如何使用 Codegen 加速 React Native 开发?
  • [网络安全]XSS之Cookie外带攻击姿势详析