初级1 题目二 选择排序

2023-10-26

1. 选择排序和冒泡排序很类似,不过冒泡排序是两两比较,每次确定一个元素的位置;而选择排序是一个和其他所有未确定的元素进行比较,然后确定位置

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

// 想要的功能,给定范围,给定个数,生成一个带有随机数的数组
void Generate(int **ptr, int length, int high){
	
	*ptr = malloc(sizeof(int)*length); 
	if(*ptr){
		int rand_num;
		for(int i=0;i<length;i++){
			rand_num = rand() % high; // 生成[0,high)的随机数
			*(*ptr+i) = rand_num;    // *ptr是首地址
		}
	}
	else{
		printf("Application for space failed!");
	}
}

// 交换两块内存中的值
void Swap(void *first, void *second, size_t size){
	
	// 得到传进来的类型,利用其开辟一块相同大小的空间
	void *temp = malloc(sizeof(void *)*size);
	
	// 然后将值复制到那块空间中,执行交换操作
	if(temp){
		memcpy(temp,first,size);  // 目的地,源,复制多少块内存
		memcpy(first,second,size);
		memcpy(second,temp,size);
	}
	else{
		puts("Application for space failed!");
	}
}

// 选择排序
void SelectSort(int *array, int length){
	int i,j;
	for(j=length-1;j>0;j--){
		for(i=0;i<j;i++){
			if(*(array+j) < *(array+i)){
				Swap(array+j,array+i,1);
			}
		}
	}
}

int main()
{
    srand(time(NULL));  // 每次随机出来的数不一样
	
	int length_a = 10;
	int high_a = 20;
	
	int *arrayA;    // 创建数组A
	Generate(&arrayA, length_a, high_a);
	
	int i;
	
	// 打印A数组
	printf("排序前的:A数组:\n");
	for(i=0;i<length_a;i++){
		printf("%d ", *(arrayA+i));
	}
	
	SelectSort(arrayA, length_a);  // A数组有序

	// 打印A数组
	printf("\n排序后的A数组:\n");
	for(i=0;i<length_a;i++){
		printf("%d ", *(arrayA+i));
	}
	
	return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

初级1 题目二 选择排序 的相关文章

随机推荐

  • Java学习心得

    Java学习心得 一 Java入门 Java是一门面向对象编程语言 不仅吸收了C 语言的各种优点 还摒弃了C 里难以理解的多继承 指针等概念 我初次接触java时 发现它和c语言有一些不同 不仅要定义类 还要搭建环境 我也是在同学的帮助下才
  • MySQL常见面试题(2023年最新)

    目录 前言 1 char和varchar的区别 2 数据库的三大范式 3 你了解sql的执行顺序吗 4 索引是什么 5 索引的优点和缺点 6 索引的类型 7 索引怎么设计 优化 8 怎么避免索引失效 也属于sql优化的一种 9 索引的数据类
  • JAVA多线程-线程安全问题

    一 CPU多核缓存架构 CPU分为三级缓存 每个CPU都有L1 L2缓存 但是L3缓存是多核公用的 CPU查找数据的顺序为 CPU gt L1 gt L2 gt L3 gt 内存 gt 硬盘 进一步优化 CPU每次读取一个数据 并不是仅仅读
  • 【NLP】使用 BERT 和 PyTorch Lightning 进行多标签文本分类

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • html网页小插件,Html 小插件2

    调用google的JS翻译插件实现页面自动翻译功能 设置自己需要的配置生成如下代码放到自己站的页面头部 代码 开源Unity小插件CheatConsole 我们在开发游戏的过程中 通常都需要一些快捷的方式来进行一些非常规的测试 这些功能一般
  • SpringBoot启动Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactor

    SpringBoot启动Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactor异常原因总结 废话少说 上干货 原因一
  • 时代选出最重要 AI 100人,多位华人上榜

    来源 Time 链接 https time com collection time100 ai 编译 芯芯 编辑 靖宇 这是 AI 的时代 2022 年 没人能预料到 以大模型为代表的人工智能技术 成为这个时代独撑科技行业上行的力量 在这一
  • kubectl exec

    文章目录 kubectl exec 通过bash获得pod中某个容器的TTY 相当于登录容器 命令行 创建一个test文件 kubectl exec exec命令同样类似于docker的exec命令 为在一个已经运行的容器中执行一条shel
  • 模型的“参数”与“超参数”

    目录 前言 一 参数 与 超参数 二 模型训练与最终模型 三 参考文献 前言 起初由于团队项目临时需要 花了个一两天的时间直接仓促上手Machine Learning 最近回顾机器学习的模型评估与选择方面的内容时 才幡然发现在初识机器学习阶
  • 小程序发布后图片不显示问题

    本地图片能正常显示 发布后图片不显示 http 127 0 0 1 49287 pageframe static img apply 20 11 png 修改后 http 127 0 0 1 49287 pageframe static i
  • 获取table中的所有行中的td值,包括input值和select值等

    首先获取表对象document getElementById onceFeeTableId 然后通过循环可以获取所有的行 tableObj rows i 如果有需要可在循环里面再加一个循环 用来循环所有的列 HTML table class
  • 【Mysql 存储过程 Or 存储函数 傻傻分不清? 】

    MySQL的存储函数 自定义函数 和存储过程都是用于存储SQL语句的 但是什么时候用什么呢 是不是总是傻傻的分不清 本文来详细的讲一下存储函数 和存储过程 以后再也不会迷糊 存储函数 存储过程 一 异同点 二 存储函数 语法 三 存储过程
  • Ubuntu 20.04上安装和配置MySql5.7

    此博客作为学习笔记使用 仅供用于学习 勿用于任何非法用途 Ubuntu换源 ubuntu 20 04系统自带源直接安装是MySQL 8 0 我要安装MySQL 5 7的版本的所以先进行换源 1 1 备份原来的sorce文件 sudo cp
  • 深度之眼(四)——Python基本数据类型

  • 使用NPM发布uni-app,Vue自定义组件

    使用NPM发布uni app以及vue自定义组件 使用npm install 安装他人发布的组件平时用的比较多 操作也比较简单 最近自己捣鼓了一下 如何发布自己的自定义组件方便自己和他人使用npm install 安装 编写组件 第一步是本
  • 多线程进阶(下)

    目录 一 JUC 二 线程安全的集合类 三 死锁 一 JUC 这里的juc指的是java util concurrent 并发 多线程相关的 一个标准库中的类 下面是JUC里面的常见类 Callable 这是一个interface 也是一种
  • 样本选择模型 & 处理效应模型

    一 样本选择偏差与自选择偏差 样本选择偏差 样本选择偏差的非随机选择机制在于对样本的选择不随机 在样本数据的采集过程中 只对某部分群体进行调查 但这部分群体与其他群体在某些方面的特征差异较大 因此根据这样的样本做回归得到的普适性结论并不可信
  • iOS自定义下拉刷新控件

    自定义下拉刷新控件 概述 用了很多的别人的下拉刷新控件 想写一个玩玩 自定义一个在使用的时候也会比较有意思 使应用更加的灵动一些 毕竟谁不喜欢各种动画恰到好处的应用呢 使用方式如下 tableview refreshControl XRef
  • 运维实践

    欢迎关注 WeiyiGeek 点击 下方卡片 即可关注我哟 设为 星标 每天带你 基础入门 到 全栈实践 再到 放弃学习 涉及 网络安全运维 应用开发 物联网IOT 学习路径 个人感悟 等知识 花开堪折直须折 莫待无花空折枝 作者主页 ht
  • 初级1 题目二 选择排序

    1 选择排序和冒泡排序很类似 不过冒泡排序是两两比较 每次确定一个元素的位置 而选择排序是一个和其他所有未确定的元素进行比较 然后确定位置 include