数组的排序算法

1.冒泡排序法

原理如下:每次比较数组中相邻的两个数组元素的值,将较小的数排在较大的数前面,可实现数组元素的从小到大排序;每次将较大的数排在较小的数前面,可实现数组元素从大到小排序。

/**每次比较数组相邻的两个元素,将大的元素放在前面**/
//冒泡排序从小到大
void fun(int arr[],int n) //定义一个数组arr[],次数n;
{int i,j,temp;for(i = 0; i < n-1; i++) //比较的次数,{for(j = 0; j < n-1-i; j++)//每次需要的比较两个相邻元素的次数{if(arr[j] > arr[j+1]){temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}
}
int main(int argc,char *argv[])
{int i;int arr[10];for(i = 0; i < 10; i++){scanf("%d",&arr[i]);}fun(arr,10);for(i = 0; i < 10; i++){printf("%d ",arr[i]);}printf("\n");return 0;
}
/**每次比较数组相邻的两个元素,将大的元素放在前面**/
//冒泡排序从大到小
void fun1(int arr[],int n) //定义一个数组arr[],次数n;
{int i,j,temp;for(i = 0; i < n-1; i++) //比较的次数,{for(j = 0; j < n-1-i; j++)//每次需要的比较两个相邻元素的次数{if(arr[j] < arr[j+1]){temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}
}
int main(int argc,char *argv[])
{int i;int arr[10];for(i = 0; i < 10; i++){scanf("%d",&arr[i]);}fun1(arr,10);for(i = 0; i < 10; i++){printf("%d ",arr[i]);}printf("\n");return 0;
}

2.选则排序法

原理如下:每次在待排序的数组中查找到最大或最小的数组元素,将其值与最前面没有进行过排序的数组元素的值交换;

#include <stdio.h>/**选择排序从小到大排序**/
int main(int argc, char* argv[])
{int i, j=0, temp;int arr[5] = { 5,3,4,1,2 };for (i = 0; i< 4; i++){for (j = i + 1; j < 5; j++){if (arr[i] > arr[j]){temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}}for (i = 0; i < 5; i++){printf("%d ", arr[i]);}return 0;
}

4.快速排序法

原理:从冒泡排序演变来的算法,使用了分治法,

首先确定数组元素第一个位置的元素为基准元素。

第一个元素的位置为L。最后一个元素的位置为R。

先用基准元素从右往左遍历,如果大于就交换,没有大于,R--;

再用基准元素从左往右遍历,如果大于于就交换,没有大于,L++;

最后插入基准值;

在对左右部分重复上述步骤;

void fun(int arr[],int start,int end)
{if(start >= end){return;}int left = start; //定义一个指向数组第一个元素的指针int right = end; 	//定义一个指向数组最后一个元素的指针int pivot = arr[left]; //取出一个基准值,一般为数组第一个值while(left < right) //左边元素的指针必须小于右边元素的指针{/**右边放左边**/while(arr[right] > pivot && left < right) //如果右边的位置的值大于基准值,并且左边指针小于右边指针{                                          right--;                              //直到右边位置的值小于或者等于基准值,不再 -} if(right > left ){arr[left] = arr[right];left++;}/**左边放右边**/while(arr[left] < pivot && left < right){left++;}if(left < right){arr[right] = arr[left];right--;}}arr[left] = pivot;  //将基准值插入中间,现在left 和 right 都指向基准值的指针fun(arr,start,left - 1); //重新排序基准左边fun(arr,right+1,end); //重新排序基准值右边
}int main(int argc,char *argv[])
{int i;int arr[5] = {3,1,2,5,4};fun(arr,0,sizeof(arr)/sizeof(arr[0]));for(i = 0; i < sizeof(arr)/sizeof(arr[0]); i++){printf("%d ",arr[i]);}printf("\n");return 0;
}

3.插入排序法

5.希尔排序

6.归并排序

6.排序算法的比较

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/3605.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Flutter 面试题】 可以嵌套使用 Scaffold 吗?为什么或者为什么不?

【Flutter 面试题】 可以嵌套使用 Scaffold 吗?为什么或者为什么不? 文章目录 写在前面口述回答补充说明写在前面 🙋 关于我 ,小雨青年 👉 CSDN博客专家,GitChat专栏作者,阿里云社区专家博主,51CTO专家博主。2023博客之星TOP153。 👏🏻 正在学 Flutter 的同学,…

科技论文网站:中国科技论文在线

文章目录 1. Intro2. Main3. Cons Evaluation彩蛋&#xff1a;科学素质 这是作者最后一次发 这种类型的宣传 科普文章 1. Intro 中国科技论文在线是经教育部批准&#xff0c;由教育部科技发展中心主办&#xff0c; 利用现代信息技术手段&#xff0c;打破传统出版物的概念&…

Scrapy爬虫框架入门(豆瓣电影Top 250)

文章目录 Scrapy 官网Scrapy 文档GithubScrapy 简介项目结构爬虫实现XPath 教程创建 Scrapy 项目配置用户代理网页 dom 元素 IP 代理池IP代理池作用配置IP代理池申请IP代理池 Scrapy 官网 https://scrapy.org/ Scrapy 文档 https://docs.scrapy.org/en/latest/ Github htt…

在windows上安装MySQL数据库全过程

1.首先在MySQL的官网找到其安装包 在下图中点击MySQL Community(gpl) 找到MySQL Community Server 选择版本进行安装包的下载 2.安装包&#xff08;Windows (x86, 64-bit), MSI Installer&#xff09;安装步骤 继续点击下一步 继续进行下一步&#xff0c;直到出现此界面&#…

电商平台海外营销利器:DSP平台

电商出海进程持续推进&#xff0c;多款电商应用在全球市场中取得亮眼成绩&#xff0c;据SensorTower数据统计&#xff0c;Temu、AliExpress和Shein等多款电商应用成功闯进2023年全球市场电商应用下载量增长榜Top5。电商出海的成功离不开多方面的努力&#xff0c;本文将从海外营…

Vue3+vite优化基础架构(1)--- 使用unplugin-vue-components

Vue3vite优化基础架构&#xff08;1&#xff09;--- 使用unplugin-vue-components 说明安装unplugin-vue-componentsvite.config.js中使用unplugin-vue-components/vite 说明 这里记录下自己在Vue3vite的项目使用unplugin-vue-components/vite来自定义组件自动全局引入svg雪碧…

2014NOIP普及组真题 1. 珠心算测验

线上OJ&#xff1a; 一本通&#xff1a;http://ybt.ssoier.cn:8088/problem_show.php?pid1965 核心思想&#xff1a; 1、题目所求为“有多少个数其他两个数之和”&#xff0c;故不管5是由14组成&#xff0c;还是23组成&#xff0c;都只算一次。 2、利用 set 有 自动去重 的功…

【八股】Spring Boot

SpringBoot是如何实现自动装配的&#xff1f; 首先&#xff0c;SpringBoot的核心注解SpringBootApplication里面包含了三个注解&#xff0c;SpringBootConfigurationEnableAutoConfigurationComponentScan&#xff0c;其中EnableAutoConfiguration是实现自动装配的注解&#x…

用自然语言连接系统的认知,用Function Calling 连接大模型和业务

前言 本篇文章&#xff0c;我们重点介绍Function Calling的机制和应用&#xff0c;在其原理上&#xff0c;也讲解了为什么会有plugin、GPTs出现等等。 核心要点&#xff1a; 1.大模型应用的一切&#xff0c;是自然语言连接系统的认知 2.在Function Calling的应用中&#xff0…

重要文件怕丢失怎么办?汇帮数据备份软件帮你解决文件丢失的烦恼 帮你实现文件实时备份的好方法

随着数字时代的来临&#xff0c;电脑文件已成为我们日常生活和工作中不可或缺的一部分。然而&#xff0c;无论是个人用户还是企业用户&#xff0c;都可能面临数据丢失的风险&#xff0c;如硬盘故障、病毒攻击、误删除等。为了确保数据安全&#xff0c;实现电脑文件的实时备份变…

开源模型应用落地-LangChain高阶-集成vllm-QWen1.5-OpenAI-Compatible Server(三)

一、前言 通过langchain框架调用本地模型,使得用户可以直接提出问题或发送指令,而无需担心具体的步骤或流程。vLLM可以部署为类似于OpenAI API协议的服务器,允许用户使用OpenAI API进行模型推理。 相关文章: 开源模型应用落地-LangChain试炼-CPU调用QWen1.5(一) 开源模型…

Spring Boot 中单元测试框架 Mockito 的正确使用

Spring Boot 中单元测试框架 Mockito 的正确使用 本文是对前段时间修复老项目单元测试的总结记录&#xff0c;在修复过程中&#xff0c;发现中文互联网中的不少文章对单元测试框架Mockito的使用说明基本不准确又或是AI生成&#xff0c;希望我这篇能够把这方面简单说透说对。 文…

【MySQL】函数

1. 函数简介 SQL 语言中&#xff0c;包括了内置函数和自定义函数。内置函数是系统内置的通用函数&#xff0c;而自定义函数是我们根据自己的需要编写的。MySQL提供的内置函数实现的功能角度可以分为 数值函数、字符串函数、日期和时间函数、流程控制函数、加密与解密函数、获取…

学习OpenCV——CV_8UC1、CV_16UC1、CV_32FC1等对应的整数值及计算方法(一)

学习OpenCV——CV_8UC1、CV_16UC1、CV_32FC1等对应的整数值及计算方法&#xff08;一&#xff09; 1.代码段2.计算方法举例3.直接给出其余对应结果 1.代码段 以下取自OpenCV文档 #define CV_BIG_INT(n) #define CV_BIG_UINT(n) #define CV_CN_MAX 512 #define CV…

等保合规:保护企业网络安全的必要性与优势

前言 无论是多部网络安全法律法规的出台&#xff0c;还是最近的“滴滴被安全审查”事件&#xff0c;我们听得最多的一个词&#xff0c;就是“等保。” 只要你接触安全类工作&#xff0c;听得最多的一个词&#xff0c;一定是“等保。” 那么&#xff0c;到底什么是“等保”呢…

Redis网络相关的结构体 和 reactor模式

目录 1. epoll的封装 结构体aeApiStae 创建epoll fd的封装 epoll_ctl的封装 epoll_wait的封装 2. 结构体aeFileEvent、aeFiredEvent、aeTimeEvent 结构体aeFileEvent 结构体aeFiredEvent 结构体aeTimeEvent 3. struct aeEventLoop aeEventLoop相关的函数 1. 创建eve…

Rust HTTP 客户端:易于使用、功能强大 | 开源日报 No.228

seanmonstar/reqwest Stars: 8.9k License: Apache-2.0 reqwest 是一个易于使用且功能强大的 Rust HTTP 客户端。 异步和阻塞客户端支持普通数据、JSON、urlencoded 和 multipart 数据格式可定制的重定向策略支持 HTTP 代理和系统原生 TLS 或 rustls 的 HTTPSCookie 存储功能…

JVM学习笔记(五)内存模型

目录 1、原子性 1.1 问题分析 1.2 解决方法 2、可见性 2.1 退不出的循环 2.2 解决办法 3、有序性 3.1 诡异的结果 3.2 解决办法 3.3 有序性理解 3.4 happens-before 4、CAS与原子类 4.1 CAS 4.2 乐观锁与悲观锁 4.3 原子操作类 5、synchronized 优化 5.1 轻量…

17(第十六章,数据管理组织与角色期望)

目录 概述 基本概念 首席数据官 个人角色 执行官角色 业务角色 IT角色 混合角色 组织架构模式 概述 本章书上的重点内容其实不多&#xff0c;了解的地方例如数据管理组织的结构包括分散、网络、混合、联邦、集中等运营模式。 之前也提过的RACI&#xff08;谁负责&am…

【域适应十九】CDTRANS: CROSS-DOMAIN TRANSFORMER FOR UN-SUPERVISED DOMAIN ADAPTATION

motivation 无监督域自适应旨在将学习到的知识从一个有标记的源领域转移到另一个无标记的目标领域。大多数现有的UDA方法都是使用基于卷积神经网络(cnn)的框架,从领域层面或类别层面学习域不变特征表示。基于类别级别的UDA的一个基本问题是为目标域中的样本产生伪标签,这些伪…