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

21-数据结构-内部排序-交换排序

        简介:主要根据两个数据进行比较从而交换彼此位置,以此类推,交换完全部。主要有冒泡和快速排序两种。

目录

一、冒泡排序

1.1简介:

1.2代码:

二、快速排序

1.1简介:

1.2代码:

一、冒泡排序

1.1简介:

        冒泡,即每次给表中一个数据,弄到最前面或者最后面,以此类推。其主要思想为:外循环是趟数,内循环是比较次数,两两比较,一点点往后冒。从第1趟比较开始比较,比较n-1次,第2趟比较,比较n-2次,以此类推,所以比较次数为\frac{(n-1)*(1+n-1)}{2}

每个框框表示一趟的比较,从头,两两比较。后面我设置了flag验证是否还需要再跑趟次了,避免做无用功,如果有序了,则不需要比较

        空间复杂度O(1)

        时间复杂度O(n^{2})

        稳定性:两两交换,很稳定。

1.2代码:

#include <stdio.h>
void BubbleSort(int *a,int n)
{int i,j,flag;for(i=0;i<n-1;i++)//比较趟数,每趟都从头到尾(n-1-i)进行比较遍历,给一个数冒到后面,冒完的,下一轮就不参与比较了 {flag=1;//避免做无用功,有序的话就不用再接着比较了 for(j=0;j<n-1-i;j++){int temp=0;if(a[j]>a[j+1])//要求递增 {temp=a[j+1];a[j+1]=a[j];a[j]=temp;flag=0;}}if(flag==1)//如果没有交换,则不要调整了,直接退出循环即可。 break;}}
void  PrintSort(int *a,int n)
{int i;for(i=0;i<n;i++){printf("%d ",a[i]);}printf("\n");
}
int main()
{int a[6]={5,6,8,9,1,2};BubbleSort(a,6);PrintSort(a,6);return 0;} 

二、快速排序

1.1简介:

        快速排序类似于前序遍历二叉树,每次选第一个元素作为基准元素,每进行一次快排,找到其基准元素位置后,从该位置左右划分成两部分,左边比基准小,右边比基准大。随后进入左边进行快排,左边都结束了,再去右边。是个递归操作。

        快排的时候,选一个基准元素,定左右两个low和high标记量,low标记的位置都应该比基准小于等于,high标记的都应该大于等于。先是标记处非空数据(逻辑上给开始基准元素处变为空。存到一个pivot基准变量中)的位置进行移动判断,往中间移动。如果high处大于等于基准,则--hgh,如果不满足,则给该处值赋值给low处,即a[low]=a[high]。这样high处变为空了,开始从low处判断.

        时间复杂度:O(nlog_2{n})

        空间复杂度:树的深度log_2{(n+1)}

        稳定性:不稳定,一次移动好多数据

        递归深度:树的高度

        递归次数:树的总结点数

        n个数据,快速排序至少比较多少次?正好平分,次数最少。

        如15个数据,第一次有一个基准元素,分成左右两块长度为7的,此时比较2*7=14,;两个7随后又分成两个长度为3的,四个3最后分成左右长度为1的。因此为2*7+2*2*3+4*2=14+12+8=34

1.2代码:

#include <stdio.h>
void  PrintSort(int *a,int n)
{int i;for(i=0;i<n;i++){printf("%d ",a[i]);}printf("\n");
}
//快速排序
//一次快排
int  Partition(int *a,int low,int high)
{int pivot =a[low];//定义基准元素变量 while(low<high)//进入比较 {while(low<high&&a[high]>=pivot) --high; //最开始标记处为非空开始移动,因此先判断右边high情况,应该high标记处比基准大于等于,满足,往中间移动--。 a[low]=a[high];//不满足high标记处大于等于基准元素,则给该high处值赋值给low标记处while(low<high&&a[low]<=pivot) ++low;a[high]=a[low];//不满足low标记处小于等于基准元素,则给该low处值赋值给high标记处}a[low]=pivot;//当low和high相等时,找到基准元素位置,给该处赋值 return low; //返回基准元素下标 
}
void QuickSort(int *a,int low,int high) 
{ //类似于前序遍历,一个二叉树。 if(low<high)//递归跳出条件 {int pivot =Partition(a,low,high);//根 QuickSort(a,low,pivot-1);   //左 QuickSort(a,pivot+1,high);  //右 }}int main()
{int a[6]={5,6,8,9,1,2};//BubbleSort(a,6);QuickSort(a,0,5); PrintSort(a,6);return 0;} 

相关文章:

21-数据结构-内部排序-交换排序

简介&#xff1a;主要根据两个数据进行比较从而交换彼此位置&#xff0c;以此类推&#xff0c;交换完全部。主要有冒泡和快速排序两种。 目录 一、冒泡排序 1.1简介&#xff1a; 1.2代码&#xff1a; 二、快速排序 1.1简介&#xff1a; 1.2代码&#xff1a; 一、冒泡排序…...

5-k8s-探针介绍

文章目录 一、探针介绍二、探针类型三、探针定义方式四、探针实例五、启动探针测试六、存活探针测试七、就绪探针测试 一、探针介绍 概念 在 Kubernetes 中 Pod 是最小的计算单元&#xff0c;而一个 Pod 又由多个容器组成&#xff0c;相当于每个容器就是一个应用&#xff0c;应…...

【网络安全 --- MySQL数据库】网络安全MySQL数据库应该掌握的知识,还不收藏开始学习。

四&#xff0c;MySQL 4.1 mysql安装 #centos7默认安装的是MariaDB-5.5.68或者65&#xff0c; #查看版本的指令&#xff1a;[rootweb01 bbs]# rpm -qa| grep mariadb #安装mariadb的最新版&#xff0c;只是更新了软件版本&#xff0c;不会删除之前原有的数据。 #修改yum源的配…...

【MyBatis系列】- 什么是MyBatis

【MyBatis系列】- 什么是MyBatis 文章目录 【MyBatis系列】- 什么是MyBatis一、学习MyBatis知识必备1.1 学习环境准备1.2 学习前掌握知识二、什么是MyBatis三、持久层是什么3.1 为什么需要持久化服务3.2 持久层四、Mybatis的作用五、MyBatis的优点六、参考文档一、学习MyBatis知…...

【Linux】Ubuntu美化bash【教程】

【Linux】Ubuntu美化bash【教程】 文章目录 【Linux】Ubuntu美化bash【教程】1. 查看当前环境中是否有bash2. 安装Synth-Shell3. 配置Synth-Shell4. 取消greeterReference 1. 查看当前环境中是否有bash 查看当前使用的bash echo $SHELL如下所示 sjhsjhR9000X:~$ echo $SHELL…...

微信小程序仿苹果负一屏由弱到强的高斯模糊

进入下面小程序可以体验效果&#xff0c;然后进入更多。查看模糊效果 一、创建小程序组件 二、代码 wxml: <view class"topBar-15"></view> <view class"topBar-14"></view> <view class"topBar-13"></view&…...

js中的new方法

new方法的作用&#xff1a;创建一个实例对象&#xff0c;并继承原对象的属性和方法&#xff1b; new对象内部操作&#xff1a; 1&#xff0c;创建一个新对象&#xff0c;将新对象的proto属性指向原对象的prototype属性&#xff1b; 2&#xff0c;构造函数执行环境中的this指向…...

机器学习-无监督算法之降维

降维&#xff1a;将训练数据中的样本从高维空间转换到低维空间&#xff0c;降维是对原始数据线性变换实现的。为什么要降维&#xff1f;高维计算难&#xff0c;泛化能力差&#xff0c;防止维数灾难优点&#xff1a;减少冗余特征&#xff0c;方便数据可视化&#xff0c;减少内存…...

ubuntu20.04下Kafka安装部署及基础使用

Ubuntu安装kafka基础使用 kafka 安装环境基础安装下载kafka解压文件修改配置文件启动kafka创建主题查看主题发送消息接收消息 工具测试kafka Assistant 工具连接测试基础连接连接成功查看topic查看消息查看分区查看消费组 Idea 工具测试基础信息配置信息当前消费组发送消息消费…...

汉得欧洲x甄知科技 | 携手共拓全球化布局,助力出海中企数智化发展

HAND Europe 荣幸获得华为云颁发的 GrowCloud 合作伙伴奖项&#xff0c;进一步巩固了其在企业数字化领域的重要地位。于 2023 年 10 月 5 日&#xff0c;HAND Europe 参加了华为云荷比卢峰会&#xff0c;并因其在全球拓展方面的杰出贡献而荣获 GrowCloud 合作伙伴奖项的认可。 …...

【Javascript保姆级教程】显示类型转换和隐式类型转换

文章目录 前言一、显式类型转换1.1 字符串转换1.2 数字转换1.3 布尔值转换 二、隐式类型转换2.1 数字与字符串相加2.2 布尔值与数字相乘 总结 前言 JavaScript是一种灵活的动态类型语言&#xff0c;这意味着变量的数据类型可以在运行时自动转换&#xff0c;或者通过显式类型转…...

C++算法前缀和的应用:分割数组的最大值的原理、源码及测试用例

分割数组的最大值 相关知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例&#xff1a;付视频课程 二分 过些天整理基础知识 题目 给定一个非负整数数组 nums 和一个整数 m &#xff0c;你需要将这个数组分成 m 个非空的连续子数组。 设计一个算法…...

gitlab自编译 源码下载

网上都是怎么用 gitlab&#xff0c;但是实际开发中有需要针对 gitlab 进行二次编译自定义实现功能的想法。 搜索了网上的资料以及在官网的查找&#xff0c;查到了如下 gitlab 使用 ruby 开发。 gitlab 下载包 gitlab/gitlab-ce - Packages packages.gitlab.com gitlab/gitl…...

SBD(Schottky Barrier Diode)与JBS(Junction Barrier Schottky)

SBD和JBS二极管都是功率二极管&#xff0c;具有单向导电性&#xff0c;在电路中主要用于整流、箝位、续流等应用。两者的主要区别在于结构和性能。 结构 SBD是肖特基二极管的简称&#xff0c;其结构由一个金属和一个半导体形成的金属-半导体结构成。 JBS是结势垒肖特基二极…...

HANA:计算视图-图形化Aggregation组件-踩坑小记(注意事项)

今天遇到在做HANA视图开发的时候&#xff0c;遇到一个事&#xff0c;一直以为是个BUG&#xff0c;可把我气坏了&#xff0c;具体逻辑是这样的&#xff0c;是勇图形化处理的&#xff0c;ACDOCA innerjoin 一个时间维度表&#xff0c;就这么简单&#xff0c;完全按照ACDOCA的主键…...

【milkv】更新rndis驱动

问题 由于windows升级到了11&#xff0c;导致rndis驱动无法识别到。 解决 打开设备管理器&#xff0c;查看网络适配器&#xff0c;没有更新会显示黄色的图标。 右击选择更新驱动...

基于混沌博弈优化的BP神经网络(分类应用) - 附代码

基于混沌博弈优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于混沌博弈优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.混沌博弈优化BP神经网络3.1 BP神经网络参数设置3.2 混沌博弈算法应用 4.测试结果…...

基于人工水母优化的BP神经网络(分类应用) - 附代码

基于人工水母优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于人工水母优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.人工水母优化BP神经网络3.1 BP神经网络参数设置3.2 人工水母算法应用 4.测试结果…...

【C++】哈希学习

哈希学习 unordered系列关联式容器哈希结构除留余数法哈希冲突闭散列线性探测二次探测 负载因子开散列开散列增容 闭散列 VS 开散列字符串哈希算法 线性探测 & 二次探测实现拉链法实现 unordered系列关联式容器 unordered系列关联式容器是从C11开始&#xff0c;STL提供的。…...

Nginx的安装——window环境

1、下载Nginx 在官网下载稳定版本&#xff1a; http://nginx.org/en/download.html 以nginx/Windows-1.24.0为例&#xff0c;直接下载 nginx-1.24.0.zip。 下载后解压&#xff0c;解压后如下&#xff1a; 2、启动nginx 在window环境下启动nginx的方法有以下两种&#xff1a; …...

C语言笔记之指针

一.指针含义 1.a、*a与&a的区别 a存储指向变量的地址,*a为指针的值,&a为指针的地址 #include <stdio.h>int main(){/** 测试代码部分一 **/int a12;int *b1;b1&a1;printf(" a1 %d, &a1 %d, b1 %d, *b1 %d, &b1 %d\n\n",a1,&a1…...

【 OpenGauss源码学习 —— 列存储(CU)(二)】

列存储&#xff08;CU&#xff09;&#xff08;二&#xff09; 概述GetCUHeaderSize 函数Compress 函数CU::FillCompressBufHeader 函数CU::CompressNullBitmapIfNeed 函数CU::CompressData 函数 声明&#xff1a;本文的部分内容参考了他人的文章。在编写过程中&#xff0c;我们…...

Java并发面试题:(四)synchronized和lock区别

synchronized 关键字 synchronized关键字解决的是多个线程之间访问资源的同步性&#xff0c;synchronized关键字可以保证被它 修饰的方法或者代码块在任意时刻只能有一个线程执行。 另外&#xff0c;在 Java 早期版本中&#xff0c; synchronized属于重量级锁&#xff0c;效率…...

使用Nginx实现采集端和数据分析平台的数据加密传输

1. 需求描述 目前鸿鹄暴露出来的重要ports如下表&#xff1a; 在实际的生产环境中&#xff0c;结合我司的使用场景&#xff0c;需要在鸿鹄前端安装proxy&#xff0c;用以解决如下两个问题&#xff1a; 1.1 实现http到https的强制跳转 企业环境中&#xff0c;一般会关闭http 80端…...

appium---如何判断原生页面和H5页面

目前app中存在越来越多的H5页面了&#xff0c;对于一些做app自动化的测试来说&#xff0c;要求也越来越高&#xff0c;自动化不仅仅要支持原生页面&#xff0c;也要可以H5中进行操作自动化&#xff0c; webview是什么 webview是属于android中的一个控件&#xff0c;也相当于一…...

【WIFI】【WPS】如何从log角度判断WPS 已经连接上

在Android项目中,由于WPS在Framework 接口中已经remove了 只能通过wpa-supplicant 代码中去判断是否连接上了 这段代码log 表示 PBC模式下没有激活 09-21 22:42:16.221503 3782 3782 D wpa_supplicant: wlan0: 0: 04:cf:4b:21:a0:3e ssid=Openwrt-WPS-tp wpa_ie_len=0 rsn…...

[正式学习java①]——java项目结构,定义类和创建对象,一个标准javabean的书写

目录 一、创建第一个java文件 二、 初始类和对象 三、符合javabean规范的类 一、创建第一个java文件 要想写代码&#xff0c;你得有文件啊 以前的创建方式&#xff1a; 右键新建文本文档&#xff0c;开始写代码&#xff0c;写完改后缀名&#xff0c;保存……这样文件一旦多了…...

day36

今日内容概要 进程基础(操作系统中的概念) 进程调度算法(四种算法) 进程的并行和并发的概念 同步异步阻塞非阻塞的概念 创建进程(进程类Process) Process类的参数 Process类的方法 如何开启多进程 基于TCP协议的高并发程序 进程基础 进程它是操作系统中最重要的概念…...

五. 激光雷达建图和定位方案-开源SLAM

前面内容&#xff1a; 一. 器件选型心得&#xff08;系统设计&#xff09;--1_goldqiu的博客-CSDN博客 一. 器件选型心得&#xff08;系统设计&#xff09;--2_goldqiu的博客-CSDN博客 二. 多传感器时间同步方案&#xff08;时序闭环&#xff09;--1 三. 多传感器标定方案&a…...

SAP MM学习笔记37 - 请求书照合中的 追加请求/追加Credit 等概念/ 请求书的取消

有关请求书照合&#xff0c;之前学习了一部分&#xff0c;现在再来学其中的一些概念。 其实这些概念也许并不常用&#xff0c;但是你又不能不知道&#xff0c;因为客户会问。 有关请求书&#xff0c;贴一些以前学习的文章&#xff0c;以方便阅读。 SAP MM学习笔记33 - 请求书…...

彩票网站建设教程/百度seo优化服务

静态方法&#xff1a; 与类无关&#xff0c;不能访问类里的任何属性和方法 类方法&#xff1a; 只能访问类变量 属性property 把一个方法变成一个静态属性 反射 getattr(obj,str) setattr(obj,str,func) hasattr(obj,str) delattr(obj,str) 异常&#xff1a;自定义异常 raise&a…...

国外产品展示网站源码/化妆品推广软文

整了一天&#xff0c;参考了n多资料&#xff0c;终于弄好了&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;想把Linux中MySQL的安装程序和数据文件分开&#xff0c;首先是安装时配置的问题&#xff0c;./configure --prefix/program/my…...

关于网站平台建设调研的函/百度推广seo优化

/**根据HTML代码获取word文档内容创建一个本质为mht的文档&#xff0c;该函数会分析文件内容并从远程下载页面中的图片资源该函数依赖于类WordMake该函数会分析img标签&#xff0c;提取src的属性值。但是&#xff0c;src的属性值必须被引号包围&#xff0c;否则不能提取param s…...

工控主机做网站服务器/百度资源站长平台

本文研究全球与中国市场饮水机的发展现状及未来发展趋势&#xff0c;分别从生产和消费的角度分析饮水机的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的市场…...

请给自己的网站首页布局/会计培训班推荐

原生的Ubuntu系统软件源&#xff0c;会导致的系统软件更新缓慢的问题。所以&#xff0c;建议替换为国内的系统镜像源。实验环境Ubuntu 18.04 server 版本实验过程系统的镜像配置表位于&#xff1a;/etc/apt/sources.list首先&#xff0c;我们需要对其进行备份&#xff0c;防止由…...

wordpress最近评论/上海优化外包公司排名

转眼19年就将翻篇&#xff0c;跨入2020&#xff0c;站长们私下也都在总结一年网站运营经验&#xff0c;预测明年搜索优化的方向&#xff0c;其中就有大佬对明年的Google搜索趋势做出了一个预判&#xff0c;站长们可以参考下。 2020年搜索优化方向 网站优化 搜索引擎 Google 微…...