【C语言学习】数组排序.选择法

2023-05-16


上课学的选择法数组排序,老师讲的云里雾里的,准备用自己的理解再写一下它的原理及注意点,希望对你有所帮助


目录

1.原理

2.注意点

3.代码


1.原理

每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完

通俗来说,就是从数组中第一个元素开始,依次检测它后面的元素(如果检测到比它大(或小)的就换值),检测完第一个元素,就检测第二个,以此类推

 

2.注意点

选择法排序总共需要2个for循环

第一个for循环:

假设数组中有N个元素,给这个数组中元素排序需要将它切N-1刀检测;后移时for循环

第二个for循环:

检测位移后的每个数,与每刀前的一个数比较,判断是否需要换值

3.代码

#include <stdio.h>

#define N 6

int main()
{
	int i,j,a[N],t;
	for(i=0;i<N;i++)
		scanf("%d",&a[i]);
/*假设数组中有N个元素,给这个数组中元素排序需要将它切N-1刀检测*/	
    for(i=0;i<N-1;i++)

		for(j=i;j<=N-1;j++)//检测位移后的每个数,与每刀前的一个数比较,判断是否需要换值
			if(a[i]>a[j])
			{
				t=a[i];
				a[i]=a[j];
				a[j]=t;
			}
	for(i=0;i<N;i++)
		printf("%d",a[i]);		
}

升级:每次全部检测完,再换值;而不是检测到就换;提高程序运行效率

#include <stdio.h>

#define N 6

int main()
{
	int i,j,a[N],t,min;
	for(i=0;i<N;i++)
		scanf("%d",&a[i]);
	for(i=0;i<N-1;i++)//假设数组中有N个元素,给这个数组中元素排序需要将它切N-1刀检测
	{
		min=i;	
		for(j=i+1;j<=N-1;j++)//检测位移后的每个数,与每刀前的一个数比较,判断是否需要换值
			if(a[min]>a[j])
				min=j;
		if(min!=i)
		{
			t=a[i];
			a[i]=a[min];
			a[min]=t;
		}
	}		
	for(i=0;i<N;i++)
		printf("%d",a[i]);		
}

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

【C语言学习】数组排序.选择法 的相关文章

  • C语言之数组

    目录 一 一维数组 1 一维数组的定义 2 一维数组初始化 3 一维数组的引用 4 一维数组程序举例 二 二维数组 1 二维数组的定义 2 二维数组的初始化 3 二维数组的引用 4 二维数组的举例 三 字符数组 1 字符数组的定义 2 字符
  • C语言之函数

    目录 一 函数的定义 二 函数的参数 1 实际参数 xff08 实参 xff09 2 形式参数 xff08 形参 xff09 三 函数的调用 四 函数的返回 五 函数的声明 一 函数的定义 函数是一块代码 xff0c 接受零个或多个参数 x
  • C语言之指针运算符、指针变量及其定义、指针的使用

    目录 一 指针运算符 1 amp 运算符 2 运算符 二 指针变量及其定义 1 指针变量 2 定义指针变量 三 指针的使用 指针 xff0c 是C语言中的一个重要概念 xff0c 也是掌握C语言比较困难的部分 指针也就是内存地址 xff0c
  • C语言——指针的运算以及野指针

    目录 一 野指针 1 野指针成因 xff08 1 xff09 指针未初始化 xff08 2 xff09 指针越界访问 xff08 3 xff09 指针指向的空间释放 2 如何规避野指针 二 指针的运算 1 赋值运算 2 算术运算 3 关系运
  • C语言错题总结

    输出格式 xff08 以整形为例 xff0c 其他类似 xff09 xff1a d是普通的输出 5d是将数字按宽度为5 xff0c 采用右对齐方式输出 xff0c 若数据位数不到5位 xff0c 则左边补空格 xff0c 若数据位数超过5位

随机推荐

  • C语言小游戏之弹跳的小球

    1 显示静止的小球 首先利用printf函数在屏幕坐标 xff08 x y xff09 处显示一个静止的小球字符 39 o 39 xff0c 应当注意屏幕坐标系的原点在左上角 xff0c 代码如下 xff1a include lt stdi
  • 解决Clash意外关闭后的问题;附clash常见问题解决办法

    一 引言 最近 xff0c 我在一次win11的重启更新后遇到了一个问题 xff0c 那就是发现我的浏览器无法上网了 起初 xff0c 我以为我的网络存在问题 xff0c 但后来发现不是这个问题 经过我查阅资料以及实际操作后 xff0c 我
  • Qt 获取所有进程、终止某个进程

    代码中用到Qt库的地方 xff0c 不使用Qt库的可以替换为自己相应的函数 方法一 xff1a 1 Qt开源库 xff0c 通过QProcess启动系统命令 tasklist exe 获取正在运行的进程 2 QProcess process
  • Qt QPixmap设置图片透明度

    最近看到美图秀秀的一些功能 xff0c 可以手动设置图片的透明度并显示在其它图片上 xff0c 所以自己动手做了个小Demo xff0c 实际效果如下 xff1a xff08 图片仅供参考使用 xff09 可以看到拖动下方进度条 xff0c
  • 【IDEA报错】Failed to start bean ‘documentationPluginsBootstrapper‘问题及解决方案

    使用springfox swagger2进行接口文档输出 编写配置文件Swagger2Config 64 Configuration 64 EnableSwagger2 public class Swagger2Config 64 Bean
  • Android 调整Spinner下拉框高度(避免下拉列表跑到顶部)

    在运用系统原生的Spinner控件做下拉选择功能时 由于选择项的子项Item太多 导致下拉列表跑到上面去了 关键原因是系统下拉默认的高度 spinner所在的位置 超过了屏幕底部的高度 所以就会出现下拉列表跑到控件的头部去了 解决方案 1
  • c++中的随机数rand()

    总结 xff1a 1 RANK MAX 61 32767 2 随机范围 xff1a num 61 rank x C 43 43 中rand 函数的用法 1 rand 不需要参数 xff0c 它会返回一个从0到最大随机数的任意整数 xff0c
  • 最大数和最小数位置交换位置

    输入10个整数 xff0c 用函数编程将其中最大数与最小数的位置互换 然后在主函数中将交换后的数组的所有元素输出 include lt stdio h gt int main int arr 10 61 0 int maxi 61 0 in
  • HDFS基本概念

    目录 零 学习目标 一 导入新课 二 新课讲解 xff08 一 xff09 HFDS的演变 xff08 二 xff09 HDFS的基本概念 1 NameNode xff08 名称节点 xff09 2 DataNode xff08 数据节点
  • 用栈来判断字符串是否回文

    include lt iostream gt include lt bits stdc 43 43 h gt using namespace std define MAX SIZE 100 class Stack private char
  • 技术分享 | 将覆盖反馈融入黑盒模糊测试技术提升测试效率

    引言 近几年来 xff0c 自动化漏洞挖掘技术成为网络安全的重要研究方向 传统的漏洞挖掘技术面临着耗时长 误报多等痛点 xff0c 且无法全面地探测目标软件中的已知与未知漏洞 因此 xff0c 一种简单高效的漏洞挖掘技术 xff0c 即模糊
  • 基于Vue3+Vite实现的移动端天气预报系统

    文章目录 1 前言2 准备工作3 项目创建与配置3 1适配移动端3 2路由配置 4 功能实现4 1Footer组件的实现4 2Mine组件的实现4 3Guide组件的实现4 4GuideInfo组件的实现4 5 Home组件的实现4 6封装
  • 【C++ 将十六进制数转换为二进制数】

    问题描述 将十六进制数转换为二进制数 输入格式 输入一个16进制数 输出格式 输出二进制数 输入样例 在这里给出一组输入 例如 xff1a 23 输出样例 在这里给出相应的输出 例如 xff1a 100011 输入样例 在这里给出一组输入
  • 电力系统强大的Gurobi 求解器的学习(Python&Matlab)

    到底有多强大 xff0c 看看就知道 xff0c 必须 x1f44d x1f44d x1f44d xff1a 目录 1 概述 2 算例理解 Python 2 1 算例1 详细入门 2 2 算例2 一般线性规划问题 2 3 算例3 非凸问题
  • 位移操作符 <<左移 与 >>右移 的基本逻辑

    1 xff1a lt lt 左移操作符 2 xff1a gt gt 右移操作符 xff08 注 xff1a 位移操作符的操作数只能是整数 xff09 lt lt 左移操作符 与 gt gt 右移操作符 都是移二进制位操作符 整数的二进制表现
  • 判断101到200有多少素数,并输出所有素数

    分析 xff1a 1 从101到200 xff0c 我们要用到for语句 xff08 如果有其它条件就把i 61 101到200改成条件的数 xff09 for i 61 101 i lt 61 200 i 43 43 2 判断素数 xff
  • 求最大值,求10 个整数中最大值

    求最大值 求10 个整数中最大值 思路 xff1a 1 采用循环的方式输入一个数组 2 使用max标记数组中的最大值 xff0c 采用循环的方式依次获取数组中的每个元素 xff0c 与max进行比较 xff0c 如果arr i 大于 max
  • Android app后台运行休眠仍然可以运行的方法(确保一直运行)

    在播放器app中由于需要用后台service 来播放音乐 所以一旦进入休眠状态时 就有可能被杀掉进程 所以需要让service 一直运行不被杀掉进程 在android 中WakeLock的相关 API可以确保应用程序中后台任务一直运行 使应
  • 输入N个数,输出最大值和最小值

    include lt stdio h gt int main int max min a b c num scanf 34 d 34 amp a scanf 34 d 34 amp b max 61 b min 61 b for c 61
  • 【C语言学习】数组排序.选择法

    上课学的选择法数组排序 xff0c 老师讲的云里雾里的 xff0c 准备用自己的理解再写一下它的原理及注意点 xff0c 希望对你有所帮助 目录 1 原理 2 注意点 3 代码 1 原理 每一次从待排序的数据元素中选出最小 或最大 的一个元