排序算法1:冒泡排序、快速排序、插入排序
排序算法:交换类排序,插入类排序、选择类排序、归并类排序
交换类排序:冒泡排序、快速排序
一、冒泡排序

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef int ElemType;
typedef struct{ElemType *elem; //整形指针,申请的堆空间的起始地址存入elem int TableLen; //存储动态数组里边元素的个数
}SSTable;void ST_Init(SSTable &ST,int len){ST.TableLen=len;ST.elem=(ElemType *)malloc(sizeof(ElemType)*ST.TableLen);int i;srand(time(NULL)); //随机数生成for(i=0;i<ST.TableLen;i++){ST.elem[i]=rand()%100;}
}void ST_print(SSTable ST){int i;for(i=0;i<ST.TableLen;i++){printf("%3d",ST.elem[i]);}printf("\n");
}void swap(ElemType &a,ElemType &b){ElemType tmp;tmp=a;a=b;b=tmp;
} //两层循环
//优先写内层循环,再写外层循环
void BubbleSort(ElemType A[],int n){int i,j;bool flag; for(i=0;i<n-1;i++){ //控制的是有序数的数目flag=false; for(j=n-1;j>i;j--){ //内层控制比较和交换 if(A[j-1]>A[j]){swap(A[j-1],A[j]);flag=true;}}if(flag==false){ //如果一趟没有发生任何交换,说明数组有序,提前结束排序return; }}
}int main(){SSTable ST;ST_Init(ST,10); ST_print(ST);BubbleSort(ST.elem,10); ST_print(ST);return 0;
}
时间复杂度:内层是j>i,外层是从0到n-1,运行的总次数是1+2+3+4+...+n-1,即O()
空间复杂度:O(1),没有使用额外空间,不会因为n的变化而变化
如果数组本身有序,最好的时间复杂度是O(n)
二、快速排序
核心:分治思想
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef int ElemType;
typedef struct{ElemType *elem; //整形指针,申请的堆空间的起始地址存入elem int TableLen; //存储动态数组里边元素的个数
}SSTable;void ST_Init(SSTable &ST,int len){ST.TableLen=len;ST.elem=(ElemType *)malloc(sizeof(ElemType)*ST.TableLen);int i;srand(time(NULL)); //随机数生成for(i=0;i<ST.TableLen;i++){ST.elem[i]=rand()%100;}
}void ST_print(SSTable ST){int i;for(i=0;i<ST.TableLen;i++){printf("%3d",ST.elem[i]);}printf("\n");
}void swap(ElemType &a,ElemType &b){ElemType tmp;tmp=a;a=b;b=tmp;
} int Partition(ElemType A[],int low,int high){ElemType pivot=A[low]; //拿最左边的作为分割值,并存储下来 while(low<high){while(low<high&&A[high]>=pivot){ //从后往前遍历,找到一个比分割值小的 --high;}A[low]=A[high]; while(low<high&&A[low]<=pivot){++low;}A[high]=A[low];}A[low]=pivot;return low; //返回分割值所在的下标
}//递归实现
void QuickSort(ElemType A[],int low,int high){if(low<high){int pivotpos=Partition(A,low,high);QuickSort(A,low,pivotpos-1);QuickSort(A,pivotpos+1,high);}
} int main(){SSTable ST;ST_Init(ST,10); ST_print(ST);QuickSort(ST.elem,0,9); ST_print(ST);return 0;
}
空间复杂度与n有关
三、插入排序
插入排序:直接插入排序、折半插入排序、希尔排序
直接插入排序

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef int ElemType;
typedef struct{ElemType *elem; //整形指针,申请的堆空间的起始地址存入elem int TableLen; //存储动态数组里边元素的个数
}SSTable;void ST_Init(SSTable &ST,int len){ST.TableLen=len;ST.elem=(ElemType *)malloc(sizeof(ElemType)*ST.TableLen);int i;srand(time(NULL)); //随机数生成for(i=0;i<ST.TableLen;i++){ST.elem[i]=rand()%100;}
}void ST_print(SSTable ST){int i;for(i=0;i<ST.TableLen;i++){printf("%3d",ST.elem[i]);}printf("\n");
}void InsertSort(ElemType *arr,int n){int i,j,insertVal;for(i=1;i<n;i++){ //控制要插入的数 insertVal=arr[i]; //先保存要插入的值//内层控制比较,往后覆盖 for(j=i-1;j>=0&&arr[j]>insertVal;j--){arr[j+1]=arr[j];} arr[j+1]=insertVal;}
}int main(){SSTable ST;ST_Init(ST,10); ST_print(ST);InsertSort(ST.elem,10); ST_print(ST);return 0;
}

相关文章:
排序算法1:冒泡排序、快速排序、插入排序
排序算法:交换类排序,插入类排序、选择类排序、归并类排序 交换类排序:冒泡排序、快速排序 一、冒泡排序 #include <stdio.h> #include <stdlib.h> #include <time.h> typedef int ElemType; typedef struct{ElemType *e…...
Vant Weapp
Vant Weapp - 轻量、可靠的小程序 UI 组件库 van-radio name 是一个字符串,无法传对象的处理 以及 mpx 多层嵌套 for 循环处理 <viewwx:for"{{questionList}}"wx:for-item"question" // item 重命名wx:for-index"questionIndex"…...
无人机精准定位技术,GPS差分技术基础,RTK原理技术详解
差分GPS的基本原理 差分GPS(Differential GPS,简称DGPS)的基本原理是利用一个或多个已知精确坐标的基准站,与用户(移动站)同时接收相同的GPS卫星信号。由于GPS定位时会受到诸如卫星星历误差、卫星钟差、大…...
java面试:elasticsearch
文章目录 引言I 索引1.1 覆盖索引1.2 elasticsearch 面试题1.3 Google的搜索本质II elasticsearch的倒叙索引2.1 发展历史2.2 倒排索引2.3 倒排序的搜索流程III elasticsearch的基础概念IV 创建索引库4.1 步骤4.2 mapping映射4.3 ik分词器...
GO语言学习笔记(与Java的比较学习)(三)
函数 按值传递(call by value) 按引用传递(call by reference) Go 默认使用按值传递来传递参数,也就是传递参数的副本。函数接收参数副本之后,在使用变量的过程中可能对副本的值进行更改,但不…...
如何用Python3自撰一个简单的后端框架
不使用任何现有的后端框架来创建一个Python 3的后端框架是一个相当复杂的任务,因为它涉及到许多Web开发的基础知识,比如HTTP协议处理、路由、中间件、请求和响应处理等。然而,我们可以从最基本的概念开始,逐步构建一个简单的后端框架。 以下是一个非常基础的指南,用于创建…...
使用pyannote-audio实现声纹分割聚类
使用pyannote-audio实现声纹分割聚类 # GitHub地址 https://github.com/MasonYyp/audio1 简单介绍 pyannote.audio是用Python编写的用于声纹分割聚类的开源工具包。在PyTorch机器学习基础上,不仅可以借助性能优越的预训练模型和管道实现声纹分割聚类,还…...
防御保护:防火墙内容安全
一、IAE(Intelligent Awareness Engine)引擎 二、深度检测技术(DFI和DPI) 1.DPI – 深度包检测技术 DPI主要针对完整的数据包(数据包分片,分段需要重组),之后对数据包的内容进行识别。&#x…...
uni-app webview 打开baidu.com
在uni-app中,你可以使用web-view组件来打开外部网页,比如百度首页。以下是一个简单的示例代码,展示了如何在uni-app中使用web-view组件打开百度首页: <template> <view> <web-view :src"baiduUrl">&l…...
【C#】SixLabors.ImageSharp和System.Drawing两者知多少
欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。…...
总是 -bash: gomobile: 命令未找到
总是 -bash: gomobile: 命令未找到 问题描述 我的项目是/Users/$user/go/src/abc.com/project 当我尝试在 /Users/GaryChan/go/src/abc.com/project/sdk 并运行: export ANDROID_HOME/Users/$user/Library/Android/sdk/ndk-bundle/gomobile bind -targetandroid abc.com/p…...
day27【LeetCode】454. 四数相加 II
day27【LeetCode】454. 四数相加 II 1.题目描述 附上题目链接:四数相加 II 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 < i, j, k, l < nnums1[i] …...
UE5 UE4 不同关卡使用Sequence动画
参考自:关于Datasmith导入流程 | 虚幻引擎文档 (unrealengine.com) 关卡中的Sequence动画序列,包含特定关卡中的Actor的引用。 将同一个Sequcen动画资源放入其他关卡,Sequence无法在新关卡中找到相同的Actor,导致报错。 Sequen…...
【JAVA日志】关于日志系统的架构讨论
目录 1.日志系统概述 2.环境搭建 3.应用如何推日志到MQ 4.logstash如何去MQ中取日志 5.如何兼顾分布式链路追踪 1.日志系统概述 关于日志系统,其要支撑的核心能力无非是日志的存储以及查看,最好的查看方式当然是实现可视化。目前市面上有成熟的解决…...
云计算与边缘计算:有何不同?
公共云计算平台可以帮助企业充分利用全球服务器来增强其私有数据中心。这使得基础设施能够扩展到任何位置,并有助于计算资源的灵活扩展。混合公共-私有云为企业计算应用程序提供了强大的灵活性、价值和安全性。 然而,随着分布在全球各地的实时人工智能应…...
「连载」边缘计算(二十)02-23:边缘部分源码(源码分析篇)
(接上篇) EdgeCore之devicetwin 前面对EdgeCore组件的edged功能模块进行了分析,本节对EdgeCore组件的另一个功能模块devicetwin进行剖析,包括devicetwin的struct调用链剖析、devicetwin的具体逻辑剖析、devicetwin的缓存机制剖析…...
Swagger接口文档管理工具
Swagger 1、Swagger1.1 swagger介绍1.2 项目集成swagger流程1.3 项目集成swagger 2、knife4j2.1 knife4j介绍2.2 项目集成knife4j 1、Swagger 1.1 swagger介绍 官网:https://swagger.io/ Swagger 是一个规范和完整的Web API框架,用于生成、描述、调用和…...
关于HTML5表单验证的方法教程
简介 HTML5表单验证是一种在客户端对用户输入进行验证的方法,可以有效地减少对于服务器端验证的依赖。通过使用HTML5表单验证,可以为用户提供实时的错误提示和更好的用户体验。本教程将介绍如何在HTML5中使用各种验证属性和技术来实现表单验证。 基本表…...
.NET生成MongoDB中的主键ObjectId
前言 因为很多场景下我们需要在创建MongoDB数据的时候提前生成好主键为了返回或者通过主键查询创建的业务,像EF中我们可以生成Guid来,本来想着要不要实现一套MongoDB中ObjectId的,结果发现网上各种各样的实现都有,不过好在阅读C#…...
BeautifulSoup+xpath+re+css简单复习+新的scrapy的学习
1.BeautifulSoupsoup BeautifulSoup(html,html.parser)all_icosoup.find(class_"DivTable") 2.xpath trs resp.xpath("//tbody[idcpdata]/tr") hong tr.xpath("./td[classchartball01 or classchartball20]/text()").extract() 这个意思是找…...
告别数据线?实测用手机Termux+网络串口给ESP32无线OTA升级
手机Termux网络串口实现ESP32无线OTA升级全攻略 想象一下这样的场景:你正坐在咖啡馆里,突然灵感迸发想修改ESP32设备的固件。传统方式需要翻出数据线、连接电脑、打开开发环境...但现在,只需掏出手机就能完成从代码修改到固件烧录的全流程。这…...
别再死记硬背LSTM公式了!用PyTorch手写一个BiLSTM,从代码里看懂数据怎么‘流’
从零实现BiLSTM:用PyTorch代码透视数据流动本质 当你第一次看到LSTM那复杂的门控结构图时,是否曾被各种箭头和符号搞得晕头转向?作为NLP领域的核心模型之一,双向长短期记忆网络(BiLSTM)在文本分类、命名实体识别等任务中表现出色&…...
告别终端命令:Applite让Mac软件管理变得简单直观
告别终端命令:Applite让Mac软件管理变得简单直观 【免费下载链接】Applite User-friendly GUI macOS application for Homebrew Casks 项目地址: https://gitcode.com/gh_mirrors/ap/Applite 还在为Mac上软件的安装、更新和卸载而烦恼吗?面对终端…...
抖音直播网页端数据采集技术实现方案解析
抖音直播网页端数据采集技术实现方案解析 【免费下载链接】DouyinLiveWebFetcher 抖音直播间网页版的弹幕数据抓取(2025最新版本) 项目地址: https://gitcode.com/gh_mirrors/do/DouyinLiveWebFetcher DouyinLiveWebFetcher 是一个专注于抖音直播…...
终极指南:如何在浏览器中零安装查看和管理SQLite数据库
终极指南:如何在浏览器中零安装查看和管理SQLite数据库 【免费下载链接】sqlite-viewer View SQLite file online 项目地址: https://gitcode.com/gh_mirrors/sq/sqlite-viewer SQLite Viewer是一款基于Web的免费开源工具,让你无需安装任何软件就…...
【2026年美团春招- 4月18日-算法岗第四题&开发岗第三题- 包包的最长公共子序列3】(题目+思路+JavaC++Python解析+在线测试)
题目内容 给定两个排列$ p$ 和 qqq,长度都为$ n。请你求出。请你求出。请你求出p $和 qq...
Alpamayo-R1-10B部署教程:Kubernetes集群中Alpamayo-R1-10B服务化部署方案
Alpamayo-R1-10B部署教程:Kubernetes集群中Alpamayo-R1-10B服务化部署方案 如果你正在自动驾驶研发领域探索,一定听说过NVIDIA的Alpamayo-R1-10B模型。这个拥有100亿参数的视觉-语言-动作模型,正在改变自动驾驶系统的开发方式。但你可能也遇…...
终极指南:如何使用R3nzSkin实现英雄联盟内存换肤技术
终极指南:如何使用R3nzSkin实现英雄联盟内存换肤技术 【免费下载链接】R3nzSkin Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3n/R3nzSkin R3nzSkin是一款基于内存动态修改技术的英雄联盟游戏换肤工具,…...
如何在5分钟内免费部署本地AI写作助手:KoboldAI完全指南
如何在5分钟内免费部署本地AI写作助手:KoboldAI完全指南 【免费下载链接】KoboldAI-Client For GGUF support, see KoboldCPP: https://github.com/LostRuins/koboldcpp 项目地址: https://gitcode.com/gh_mirrors/ko/KoboldAI-Client 你是否渴望拥有一个完全…...
XHS-Downloader深度解析:如何用开源工具高效采集小红书内容
XHS-Downloader深度解析:如何用开源工具高效采集小红书内容 【免费下载链接】XHS-Downloader 小红书(XiaoHongShu、RedNote)链接提取/作品采集工具:提取账号发布、收藏、点赞、专辑作品链接;提取搜索结果作品、用户链接…...
