【C高级】Day4 shell脚本 排序

news2024/11/28 11:00:43

 

 1. 整理思维导图

 

 2. 写一个函数,获取用户的uid和gid并使用变量接收

#!/bin/bash
function getid()
{
	uid=`id -u`
	gid=`id -g`
}

getid  
echo "uid=$uid"
echo "gid=$gid"

 

3. 整理冒泡排序、选择排序和快速排序的代码

#include <myhead.h>

void Input(int *p,int len)
{
	for(int i=0;i<len;i++)
	{
		printf("请输入第%d个元素:",i+1);
		scanf("%d",p+i);
	}
}
 
 
void Output(int *p,int len)
{
	for(int i=0;i<len;i++)
	{
		printf("%d\t",*(p+i));
	}
	putchar(10);
}

//选择排序 
void Seletion_Sort(int *p,int len)
{
	int min,t;
	for(int i=0;i<len-1;i++)
	{
		min=i;
		for(int j=i+1;j<len;j++)
		{
			if(*(p+min)>*(p+j))
			{
				min=j;
			}
		}
		if(min!=i)
		{
			t=*(p+min);
			*(p+min)=*(p+i);
			*(p+i)=t;
		}
	}
}
 
//冒泡排序
void Bubble_Sort(int *p,int len)
{
	int temp,count;
	for(int i=0;i<len-1;i++)
	{
		count=0;
		for(int j=0;j<len-1-i;j++)
		{
 
			if(*(p+j)>*(p+j+1))
			{
				temp=*(p+j);
				*(p+j)=*(p+j+1);
				*(p+j+1)=temp;
				count++;
			}
		}
		if(count==0)  break;
	}
}


//快速排序
int one_quick(int arr[],int low,int high)
{
	int key = arr[low];  //确定分界值
	while(low<high)
	{
		while(low<high && key<=arr[high])
		{
			high--;
		}
		arr[low]=arr[high];  //表示key>arr[high]
		while(low<high && key>=arr[low])
		{
			low++;
	
		}
		arr[high]=arr[low];
	}
	arr[low]=key;  //low=high
	return low;
}


void quick_sort(int arr[],int low,int high)
{
	//low>high:表示没有元素
	//low=high:表示只有一个元素
	if(low>=high) return;

	int mid=one_quick(arr,low,high);  //一轮排序

	quick_sort(arr,low,mid-1);   //递归左边排序
	quick_sort(arr,mid+1,high);  //递归右边排序
}


 
int main(int argc, const char *argv[])
{	
//	int a[]={66,66,99,88,33,22,44,55};
//	int len=sizeof(arr)/sizeof(arr[0]);

	int len;
	printf("请输入元素的个数:");
	scanf("%d",&len);
 
	int a[len];
	Input(a,len);

//  冒泡排序
//	Bubble_Sort(a,len);

//  快速排序
//	Seletion_Sort(a,len);	

//  快速排序
	quick_sort(a,0,len-1);

	Output(a,len);
	return 0;
}
 

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

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

相关文章

智慧物流园区整体架构方案【46页PPT】

导读&#xff1a;原文《智慧物流园区整体架构方案【46页PPT】》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 完整版领取方式 完整版领取方式&#xff1a; 如需获取…

Python-面向对象:面向对象、成员方法 、类和对象、构造方法、魔术方法、封装、继承、类型注解、多态(抽象类(接口))

版本说明 当前版本号[20230806]。 版本修改说明20230806初版 目录 文章目录 版本说明目录知识总览图面向对象初识对象生活中数据的组织程序中数据的组织使用对象组织数据 成员方法类的定义和使用成员变量和成员方法成员方法的定义语法注意事项 类和对象现实世界的事物和类使…

Netty:ChannelInitializer添加到ChannelPipeline完成任务以后会自动删除自己

说明 io.netty.channel.ChannelInitializer是一个特殊的ChannelInboundHandler。它的主要作用是向 Channel对应的ChannelPipeline中增加ChannelHandler。执行完ChannelInitializer的initChannel(C ch)函数以后&#xff0c;ChannelInitializer就会从ChannelPipeline自动删除自己…

sklearn中使用决策树

1.示例 criterion可以是信息熵&#xff0c;entropy&#xff0c;可以是基尼系数gini # -*-coding:utf-8-*- from sklearn import tree from sklearn.datasets import load_wine from sklearn.model_selection import train_test_split wineload_wine()# print ( wine.feature_…

Vue3 第四节 自定义hook函数以及组合式API

1.自定义hook函数 2.toRef和toRefs 3.shallowRef和shallowReactive 4.readonly和shallowReadonly 5.toRaw和markRaw 6.customref 一.自定义hook函数 ① 本质是一个函数&#xff0c;把setup函数中使用的Composition API 进行了封装,类似于vue2.x中的mixin 自定义hook函数…

Maven介绍-下载-安装-使用-基础知识

Maven介绍-下载-安装-使用-基础知识 Maven的进阶高级用法可查看这篇文章&#xff1a; Maven分模块-继承-聚合-私服的高级用法 文章目录 Maven介绍-下载-安装-使用-基础知识01. Maven1.1 初识Maven1.1.1 什么是Maven1.1.2 Maven的作用 02. Maven概述2.1 Maven介绍2.2 Maven模型…

F5 LTM 知识点和实验 12-使用规则和本地流量策略定制应用程序交付

第十一章:iapp(忽略) 第十二章:使用规则和本地流量策略定制应用程序交付 用最简单的术语来说,iRule是在网络流量通过BIGIP系统时对其执行的脚本。其思想非常简单:规则使您能够编写简单的网络感知代码片段,这些代码以各种方式影响您的网络流量。无论您是希望以BIG-IP内置…

SpringBoot 自动配置--常用配置

&#x1f600;前言 本篇博文是关于SpringBoot 自动配置的一些分享&#xff0c;希望能够帮助到您&#x1f60a; &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;您…

分布式任务调度平台——XXL-JOB

1、为什么需要任务调度平台 1.1、传统的定时任务实现方案不足 在Java中&#xff0c;传统的定时任务实现方案&#xff0c;比如Timer&#xff0c;Quartz等都或多或少存在一些问题&#xff1a; 不支持集群、不支持统计、没有管理平台、没有失败报警、没有监控等。在现在分布式的…

如何快速掌握水土保持方案编制

1、熟悉水土保持常用的主要法律法规、部委规章、规范性文件及技术规范与标准&#xff1b; 2、了解水土保持方案、监测及验收工作开展的流程&#xff1b; 3、熟悉水土保持方案、监测及验收工作需要收集的资料、现场踏勘注意事项&#xff1b; 4、熟悉常见水土保持工程施工工艺…

JavaSE_2.1——数组【概念、创建、内存分配】

今天是练习数组的第一天&#xff0c;后续继续 1、数组的定义以及声明 1.数组的定义&#xff1a;一组能够存储相同数据类型值的变量的集合 2.数组的赋值方式&#xff1a; New关键字:表示创建一个数组&#xff1b; &#xff08;1&#xff09;使用默认的初始值来初始化数组中…

我的Python教程:Tkinter组件布局管理的3种方式

**Tkinter组件布局管理可以使用pack()方法、grid()方法和place()方法。**pack()方法将组件放置在窗口中&#xff0c;grid()方法将组件放置在网格布局中&#xff0c;place()方法将组件放置在指定位置。 01使用pack()方法布局&#xff1a; 在Tkinter中&#xff0c;pack方法用于将…

【双指针_快乐数_C++】

题目解析 快乐数 算法原理 快慢双指针1、定义快慢指针 2、慢指针每次向后移动一步&#xff0c;快指针每次向后移动两步。 3、判断相遇的时候的值 编写代码 class Solution { public:int num_sum(int n){int sum 0;while(n!0){int t n%10;sumt*t;n n/10;}return sum;}bool…

Visio Studio Code 搭建Vue开发环境

一、安装Visual Studio Code 使用 Visual Studio Code&#xff08;VS Code&#xff09;开发 Vue.js 应用是一种常见的做法&#xff0c;以下是简要的步骤&#xff1a; 安装 VS Code&#xff1a; 如果您尚未安装 Visual Studio Code&#xff0c;您可以从官方网站&#xff08;htt…

作为一名软件测试工程师,需要具备哪些能力?

软件测试工程师是个神奇的职业&#xff0c;他是开发人员与老板之间的传话筒&#xff0c;也是开发人员与老板的好帮手。他不仅需要有销售的沟通能力&#xff0c;也需要具备编辑人员的文档撰写技巧。如此一个面面俱到的岗位&#xff0c;他需要具备的技能到底有哪些呢&#xff1f;…

互联网智能3D导诊系统源码支持微信小程序、APP

通过智能导诊&#xff0c;进行自助问询及挂号服务&#xff0c;减轻导诊台护士压力&#xff0c;挂号更加方便快捷。 系统技术架构&#xff1a;springbootredismybatis plusmysqlRocketMQ 一、智慧导诊系统开发原理 导诊系统从原理上大致可分为基于规则模板和基于数据模型两类…

人工智能进入到制造业后,可以带来哪些方面的新改变?

随着人工智能&#xff08;AI&#xff09;进入制造业&#xff0c;它有可能带来重大变化和改进。以下是人工智能可以给制造业带来的一些关键变化&#xff1a; 1.提高效率和生产力&#xff1a;人工智能可以通过分析大量数据并识别低效率来优化生产流程。它可以帮助简化制造运营、…

【100天精通python】Day28:文件与IO操作_JSON文件处理

目录 专栏导读 1. JSON数据格式简介 1.1 示例JSON数据 1.2 JSON文件的特点 2 json模块的常用操作 2.1 读写JSON文件的示例 2.2 解析JSON字符串 2.3 修改JSON数据 2.4 查询和操作嵌套数据 2.5 处理包含特殊字符的JSON文件 2.6 处理日期和时间 2.7 处理大型JSON文…

【web逆向】全报文加密及其登录流程的分析案例

aHR0cHM6Ly9oZWFsdGguZWxkZXIuY2NiLmNvbS9zaWduX2luLw 涉及加密库jsencrypt 定位加密点 先看加密的请求和响应&#xff1a; 全局搜索加密字段jsondata&#xff0c;这种非特定参数的一般一搜一个准&#xff0c;搜到就是断点。起初下的断点没停住&#xff0c;转而从调用栈单步…

MySQL—— 基础语法大全

MySQL—— 基础 一、MySQL概述1.1 、数据库相关概念1.2 、MySQL 客户端连接1.3 、数据模型 二、SQL2.1、SQL通用语法2.2、SQL分类2.3、DDL2.4、DML2.5、DQL2.6、DCL 三、函数四、约束五、多表查询六、事务 一、MySQL概述 1.1 、数据库相关概念 数据库、数据库管理系统、SQL&a…