冒泡排序 简单选择排序 插入排序 快速排序

news2025/1/18 6:47:22

bubblesort

两个for循环,从最右端开始一个一个逐渐有序

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void bubble(int *arr, int len);
int main(int argc, char *argv[])
{
	int arr[] = {1, 2, 3, 4, 5, 6, 7};
	int len = sizeof(arr) / sizeof(int);
	bubble(arr, len);

	for (int i = 0; i < len; i++)
	{
		printf("%d ", arr[i]);
	}
	putchar(10);
	return 0;
}

void bubble(int *arr, int len)
{
	for (int i = 0; i < len - 1; i++)
	{
		int count = 0;
		for (int j = 0; j < len - 1 - i; j++)
		{
			if (arr[j] < arr[j + 1])
			{
				arr[j] ^= arr[j + 1];
				arr[j + 1] ^= arr[j];
				arr[j] ^= arr[j + 1];
				count++;
			}
		}
		if (count == 0)
		{
			break;
		}
	}
}

selectsort

假设是升序,两个for循环,从最左端开始一个一个逐渐有序,找到lengh-1个无序区的最小值

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void selectSort(int *arr, int len);
int main(int argc, char *argv[])
{
	int arr[] = {1, 2, 3, 4, 5, 6, 7};
	int len = sizeof(arr) / sizeof(int);
	selectSort(arr, len);

	for (int i = 0; i < len; i++)
	{
		printf("%d ", arr[i]);
	}
	putchar(10);
	return 0;
}

void selectSort(int *arr, int len)
{
	int i, j;
	int min;
	for (i = 0; i < len - 1; i++)
	{
		min = i;
		for (j = i + 1; j < len; j++)
		{
			if (arr[j] > arr[min])
			{
				min = j;
			}
		}

		if (i != min)
		{
			arr[min] ^= arr[i];
			arr[i] ^= arr[min];
			arr[min] ^= arr[i];
		}
	}
}

insertsort

两个for循环,从最左端开始一个一个逐渐有序,默认第一个就是有序区,第一个for遍历无序区,第二个for循环遍历有序区,为无序区的元素的插入挪出合适的位置

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void insertSort(int *arr, int len)
{
	int i, j;
	int temp;
	for (i = 1; i < len; i++)
	{
		temp = arr[i];
		for (j = i - 1; j >= 0; j--)
		{
			if (arr[j] > temp)
			{
				arr[j + 1] = arr[j];
			}
			else
			{
				break;
			}
		}
		arr[j + 1] = temp;
	}
	
}

int main(int argc, char *argv[])
{
	int arr[] = {11, 2, 3, 4, 5, 6, 7};
	int len = sizeof(arr) / sizeof(int);
	insertSort(arr, len);

	for (int i = 0; i < len; i++)
	{
		printf("%d ", arr[i]);
	}
	putchar(10);
	return 0;
}

quicksort

#include <stdio.h>
#include <string.h>
#include <stdlib.h>


int oneSort(int *arr, int low, int high)
{
	int key = arr[low];
	while (low < high)
	{
		while (low < high && arr[high] >= key)
		{
			high--;
		}
		arr[low] = arr[high];
		while (low < high && arr[low] <= key)
		{
			low++;
		}
		arr[high] = arr[low];
	}
	arr[low] = key;
	return low;
}

void quickSort(int *arr, int low, int high)
{
	if (low >= high)
	{
		return;
	}

	int mid = oneSort(arr, low, high);
	oneSort(arr, low, mid - 1);
	oneSort(arr, mid + 1, high);
}

int main(int argc, char *argv[])
{
	int arr[] = {11, 2, 3, 4, 5, 6, 1};
	int len = sizeof(arr) / sizeof(int);
	quickSort(arr, 0, len - 1);

	for (int i = 0; i < len; i++)
	{
		printf("%d ", arr[i]);
	}
	putchar(10);
	return 0;
}

脑图

 

#!/bin/bash

function fun()
{
	read -p "请输入用户名:" username
	str=`grep -w $username /etc/passwd`
	if [ -n "$str" ]
	then
		echo `id -u $username`
		echo `id -g $username`
	else
		echo "用户不存在"
	fi
}

arr=(`fun`)
echo ${arr[*]}

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

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

相关文章

yolov5代码解读之​detect.py文件【超详细的好吗!点进来看阿很用心的!】

yolov5的代码一直在更新&#xff0c;所以你们代码有些部分可能不太一样&#xff0c;但大差不差。 先给大家看一下项目结构&#xff1a;&#xff08;最好有这个项目&#xff0c;且跑通过&#xff09; detect.py文件&#xff1a;它可以预测视频、图片文件夹、网络流等等。 如何…

重磅!百度再放大招,文心大模型3.5三大维度、20项指标遥遥领先

近日&#xff0c;清华大学新闻与传播学院沈阳团队发布《大语言模型综合性能评估报告》&#xff08;下文简称“报告”&#xff09;&#xff0c;报告显示百度文心一言在三大维度20项指标中综合评分国内第一&#xff0c;超越ChatGPT&#xff0c;其中中文语义理解排名第一&#xff…

Crond和sudo

目录 前言 一、Crond &#xff08;一&#xff09;、一次性任务 &#xff08;二&#xff09;、周期性任务 1./etc/crontab中加入 2.使用crontab命令编辑计划任务 二、sudo 1.sudo概念 2.sudo提权 总结 前言 crond是linux下用来周期性的执行某种任务或等待处理某些事件的…

[CKA]考试之Sidecar代理

由于最新的CKA考试改版&#xff0c;不允许存储书签&#xff0c;本博客致力怎么一步步从官网把答案找到&#xff0c;如何修改把题做对&#xff0c;下面开始我们的 CKA之旅 题目为&#xff1a; Context 将一个现有的 Pod 集成到 Kubernetes 的内置日志记录体系结构中&#xff…

关于多媒体视频翻译,你了解多少?

近年来&#xff0c;随着多媒体视频行业的快速发展&#xff0c;观看中外视频已成为数千万人的日常习惯&#xff0c;进而促进了视频翻译需求量的不断增加。那么&#xff0c;如何做好多媒体视频翻译服务&#xff0c;关于多媒体视频翻译&#xff0c;你了解多少&#xff1f; 据了解&…

浅谈智能低压电动机保护控制器的研发及其应用

安科瑞 华楠 摘 要&#xff1a;低压电动机保护控制器是整套工业生产自动化电动机拖动系统中的重要的核心器件&#xff0c;可以实现工业自动化生产过程中电动机远程系统监控与控制的智能化管理&#xff0c;帮助用户及 时了解电动机的运行状况&#xff0c;为电动机设备状态分析…

【算法系列 | 7】深入解析查找算法之—布隆过滤器

序言 心若有阳光&#xff0c;你便会看见这个世界有那么多美好值得期待和向往。 决定开一个算法专栏&#xff0c;希望能帮助大家很好的了解算法。主要深入解析每个算法&#xff0c;从概念到示例。 我们一起努力&#xff0c;成为更好的自己&#xff01; 今天第3讲&#xff0c;讲一…

计算机网络—TCP和UDP、输入url之后显示主页过程、TCP三次握手和四次挥手

TCP基本认识 TCP是面向连接的、可靠的&#xff0c;基于字节流的传输层通信协议。 图片来源小林coding 序号&#xff1a;传输方向上字节流的字节编号。初始时序号会被设置一个随机的初始值&#xff08;ISN&#xff09;&#xff0c;之后每次发送数据时&#xff0c;序号值 ISN…

合规管理,企业生存之本!这4大方法,助你规避风险

当下,合规管理已成为企业必修的一门学问。无论是上市公司还是民营企业,都面临着日益严苛的监管合规要求。然而,许多企业在在应对频繁更新的合规要求时,仍然手忙脚乱,合规工作参差不齐。 专家分析认为,企业合规困境的主要症结在于,业务运转过程中产生了大量证明文件,但企业对其…

全链路仿真压测系统

目录 1.项目背景 2.仿真压测系统成型之路 3. 818台网实战开始 4. 总结 1.项目背景 目前常用的压测工具一般都是针对QPS这一个单一指标进行考量。即使支持编写脚本的工具也只是通过参数化模拟用户。但是实际用户是使用单独设备请求服务器&#xff0c;即一个用户就是一个tc…

什么是重定向,怎么解决重定向问题

目录 引言 什么是重定向 为什么会发生重定向 常用的重定向方法 解决重定向问题的方法 代码示例 注意事项 总结 引言 在网络应用中&#xff0c;重定向是一种常见的技术&#xff0c;用于在浏览器请求页面时将用户重定向到另一个页面。本文将介绍重定向的概念&#xff0c…

Nginx反向代理配置+负载均衡集群部署

文章目录 负载均衡反向代理基础环境部署&#xff1a;什么是代理实验环境图流量过程 环境部署准备两台Web服务器安装Nginx准备页面内容添加主机名 代理服务器配置 修改windos hosts文件测试&#xff1a;终端浏览器 负载均衡反向代理基础环境部署&#xff1a; 什么是代理 正向代…

16-3_Qt 5.9 C++开发指南_使用QStyle 设置界面外观_实现不同系统下的界面效果的匹配

文章目录 1. QStyle的作用&#xff08;实现不同系统下的界面效果的匹配&#xff09;2. Qt内置样式的使用3. 源码3.1 可视化UI设计3.2 mainwindow.cpp 1. QStyle的作用&#xff08;实现不同系统下的界面效果的匹配&#xff09; Qt 是一个跨平台的类库&#xff0c;相同的界面组件…

D455+VINS-Fusion+surfelmapping 稠密建图(三)

继续&#xff0c;由surfelmapping建立的点云生成octomap八叉树栅格地图 一、安装OctomapServer 建图包 安装插件 sudo apt-get install ros-melodic-octomap-ros sudo apt-get install ros-melodic-octomap-msgs sudo apt-get install ros-melodic-octomap-server sudo apt-…

js-1:JavaScript中的数据类型?存储上有啥差别

1、在JavaScript中&#xff0c;共有两种数据类型。 基本类型 复杂类型 区别在于&#xff1a;存储位置不同 2、基本类型 主要分为以下6种&#xff1a; Number String Boolean Undefined null Symbol Number : 数值最常见的证书类型格式则为十进制&#xff0c;还可以设置八进制&…

K8s中的PV和PVC和监控

1.PV和PVC PV&#xff1a;持久化存储&#xff0c;对存储资源进行抽象&#xff0c;对外提供可以调用的地方&#xff08;类似&#xff1a;生产者&#xff09; PVC&#xff1a;用于调用&#xff0c;不需要关心内部实现细节&#xff08;类似&#xff1a;消费者&#xff09; 2.实…

【Gitee的使用】Gitee的简单使用,查看/创建SSH公匙、创建版本库、拉取代码、提交代码

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 本篇文章简单介绍&#xff0c;如何在Gitee上面创建版本库、拉取…

搭建企业级BI系统有多快?奥威BI表现惊人

搭建BI系统需要建立一个可靠的数据仓库和针对分析工具/UI的数据结构。同时&#xff0c;这个过程需要不断地迭代优化与维护。主要有搭建环境、建设数仓和分析模型、设计数据可视化报表。 不难看出&#xff0c;从零开始搭建企业级BI系统是一个工作量大、程序繁琐的工程&#xff…

Jenkins 使用

Jenkins 使用 文章目录 Jenkins 使用一、jenkins 任务执行二、 Jenkins 连接gitee三、Jenkins 部署静态网站 一、jenkins 任务执行 jenkins 创建 job job的名字最好是有意义的 restart_web_backend restart_web_mysql[rootjenkins ~]# ls /var/lib/jenkins/ config.xml …

AIGC+低代码:征途漫漫,道阻且长

人们总是高估一项科技所带来的短期效益&#xff0c;却又低估它的长期影响。 一、低代码与 AI 深度融合是未来发展趋势 2023 年上半年&#xff0c;随着 Chat GPT 的爆火&#xff0c;AI 在自然语言对话和代码领域的能力引发全世界的关注&#xff0c;现阶段的 AI 真的能将大家带入…