C语言实现顺序表字符型数据排序

news2024/9/22 9:58:07

 实现直接插入、冒泡、直接选择排序算法。

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

typedef char InfoType;

#define n 10					//假设的文件长度,即待排序的记录数目
typedef char KeyType;			//假设的关键字类型
typedef struct {				//记录类型
	KeyType key;				//关键字项
	InfoType otherinfo;			//其它数据项,类型InfoType依赖于具体应用而定义
} RecType;
typedef RecType SeqList[n+1];	//SeqList为顺序表类型,表中第0个单元一般用作哨兵


void InsertSort(SeqList R);  
void BubbleSort(SeqList R);
void SelectSort(SeqList R);
//测试用例 
//阴阳乾兑离震巽坎艮坤 
int main()
{
	
	int i;
	SeqList R;  //R是大小为n+1的结构数组 

	char choice;
	while (1)
	{
		system("cls");
		printf("\n\n\n\n");
		printf("\t\t               线性表的排序  \n");
		printf("\t\t======================================");
		printf("\n\n");
		printf("\t\t             1:建立线性表            \n");
		printf("\t\t             2:显示线性表            \n");
		printf("\t\t             3:插入排序              \n");
		printf("\t\t             4:冒泡排序              \n");
		printf("\t\t             5:直接选择排序          \n");
		printf("\n");
		printf("\t\t             0:退出        \n");
		printf("\n");
		printf("\t\t请选择:");

		choice = getchar();
		system("cls");
		
		switch(choice)
		{
			case '1':				
				printf("请输入欲排序的数(10个):\n");
	            for (i=1;i<=n;i++)
	             	scanf("%c",&R[i].key);
				printf("线性表创建成功!\n");
				system("Pause");
				break;
			case '2':
				printf("线性表中的数据为:\n");
				for (i=1;i<=n;i++)
		            printf("%d ",R[i].key);
				system("Pause");
				break;
			case '3':				
            	InsertSort(R);
				printf("插入排序成功!\n");
				system("Pause");
				break;
			case '4':				
				BubbleSort(R);
				printf("冒泡排序成功!\n");
				system("Pause");
				break;
			case '5':				
				SelectSort(R);
				printf("直接选择排序成功!\n");
				system("Pause");
				break;						
			case '0':
				exit(0);
		}
	}
}


//对顺序表R中的记录R[1..n]按递增序进行插入排序
void InsertSort(SeqList R)
{
	int i,j;
	for(i=2;i<=n;++i)
	if( R[i].key<R[i-1].key) { // 将 R[i] 插入有序子表
		R[0]=R[i]; // 复制为哨兵
		R[i]=R[i-1];
		for(j=i-2; R[0].key<R[j].key;--j)
			R[j+1]=R[j]; // 记录后移
		R[j+1]=R[0]; // 插入到正确位置

	}
}

//R[1..n]是待排序的文件,采用自下而上扫描对R做冒泡排序
void BubbleSort(SeqList R)
{
	int m,i,j,flag=1; RecType x;
	m=n-1;
	while((m>0)&&(flag==1))
	{ flag=0;
	for(j=1;j<=m;j++)
	if(R[j].key>R[j+1].key)
	{ flag=1;
	x=R[j];R[j]=R[j+1];R[j+1]=x; // 交换
	}//endif
	m--;
	}//endwhile
}

//对R[1..n]进行直接选择排序,用R[0]做暂存单元
void SelectSort(SeqList R)
{
	RecType x;
	int k,i,j;
	for (i=1; i<n; ++i)
	{ // 在 R[i..n] 中选择 key 最小的记录
	k=i;
	for( j=i+1;j<=n ; j++)//遍历找最小
		if ( R[j].key <R[k].key) k=j;
	if(k!=i) {x=R[k];R[k]=R[i];R[i]=x; }	//交换
	}
}

声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

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

相关文章

超详细版阿里云控制台环境配置+数据库配置

一、登录阿里云控制台 登录阿里云控制台&#xff0c;找到实例&#xff0c;切到阿里云服务器所在地址 &#x1f36d;不知道自己的服务器地址在哪边也没有关系&#xff0c;随便选择一个&#xff0c;查询不到记录的话会有以下提示&#xff0c;可以根据提示进行切换&#xff08;适…

Mac系统清理工具:您的数字生活杂务处理师

有没有觉得您的Mac有时候像是需要一个好的春季大扫除一样&#xff1f;随着我们不断使用电脑&#xff0c;各种不需要的文件、老旧的数据和忘记的安装包就像家里的灰尘一样慢慢积累。幸运的是&#xff0c;有了一些出色的Mac系统清理工具&#xff0c;我们可以轻松将这些数字灰尘拂…

含金废水的特性?如何提取含金废液中的黄金?

在金的工业使用过程和回收过程中都会产生含金废液&#xff0c;通常来自金矿冶炼、电子废弃物处理、珠宝制作和其他工业过程。由于黄金是一种贵重的贵金属&#xff0c;金废水的回收和处理是环保和资源可持续利用的关键领域之一&#xff0c;但是金的含量多数较低、甚至是微量、痕…

华为od相关信息分享

2024年OD统一考试&#xff08;D卷&#xff09;完整题库&#xff1a;华为OD机试2024年最新题库&#xff08;Python、JAVA、C合集&#xff09; 问 1.什么是华为od&#xff1f; 答&#xff1a;OD全称是Outsourcing Dispacth&#xff0c;即外包派遣&#xff0c;是华为和外企德科…

昇思MindSpore学习笔记5-02生成式--RNN实现情感分类

摘要&#xff1a; 记录MindSpore AI框架使用RNN网络对自然语言进行情感分类的过程、步骤和方法。 包括环境准备、下载数据集、数据集加载和预处理、构建模型、模型训练、模型测试等。 一、概念 情感分类。 RNN网络模型 实现效果&#xff1a; 输入: This film is terrible 正…

Kotlin linkedMapOf filterKeys

Kotlin linkedMapOf filterKeys fun main(args: Array<String>) {val lhm linkedMapOf<String, Any>(Pair("name", "phil"), //因为key相同都为 name&#xff0c;被后面的覆盖。Pair("year", 2024),Pair("name", "f…

顶会FAST24最佳论文|阿里云块存储架构演进的得与失-1.引言

今年早些时候&#xff0c;2月份举办的全球计算机存储顶会USENIX FAST 2024&#xff0c;最佳论文来自阿里云&#xff0c;论文名称《What’s the Story in EBS Glory: Evolutions and Lessons in Building Cloud Block Store》 &#xff0c;论文详尽地探讨了阿里云在过去十年中开…

新增多种图表类型,新增插件管理模块,DataEase开源数据可视化分析工具v2.8.0发布

2024年7月8日&#xff0c;人人可用的开源数据可视化分析工具DataEase正式发布v2.8.0版本。 这一版本的功能变动包括&#xff1a;图表方面&#xff0c;新增组合图、热力地图、符号地图、K线图等图表类型&#xff0c;并对已有的仪表盘、明细表、指标卡、富文本等图表类型进行了功…

Java之父James Gosling宣布正式退休 创造无数人的饭碗

编程语言Java的创始人&#xff0c;被誉为“Java之父”的James Gosling&#xff0c;近日在社交媒体上宣布了自己正式退休的消息。Gosling表示&#xff1a;“我终于退休了。做了这么多年的软件工程师&#xff0c;现在是时候享受人生了。”他透露&#xff0c;在亚马逊的过去7年是非…

手写《C++20设计模式》中介者模式

文章目录 一、前言二、实现1、UML类图2、实现 一、前言 个人感觉最后几种行为模式都很难&#xff0c;而且很重要。 对于中介者模式浅层理解就是&#xff0c;从原来所有相关对象彼此通信变为&#xff0c;引入一个中介者对象&#xff0c;让所有的相关对象通过中介者来通信&#…

wait和sleep在同步方面的区别

在 Java 中&#xff0c;wait 和 sleep 都用于让线程进入等待状态&#xff0c;但它们在同步操作和线程管理方面有显著区别。以下是它们的主要区别&#xff1a; 1. 所属的类 wait 是 Object 类的方法。sleep 是 Thread 类的静态方法。 2. 使用场景 wait 用于线程间通信&#…

鸿蒙开发小案例(名片管理))

鸿蒙开发小案例&#xff08;名片管理&#xff09; 1、页面效果1.1 初始页面1.2 点击名片展开1.3 点击收藏1.4 点击编辑按钮 2、实现代码2.1 DataModel.ets2.2 RandomUtil.ets2.3 ContactList.ets 1、页面效果 1.1 初始页面 1.2 点击名片展开 1.3 点击收藏 1.4 点击编辑按钮 2、…

第二证券:资金抱团“高股息”,超三成A股年内创历史新低!

A股商场行情冰火两重天。 “预制菜榜首股”跌破发行价 7月8日&#xff0c;味知香盘中最低跌至19.26元/股&#xff0c;股价跌破发行价&#xff0c;并创前史新低。揭露资料显现&#xff0c;公司是集研发、生产、销售为一体的半成品菜企业&#xff0c;现在具有8大产品系列&#…

短视频矩阵系统源代码开发---多种剪辑逻辑再次升级

揭秘AI短视频运营秘籍&#xff0c;轻松涨粉&#xff01; 1、数据管理方面&#xff0c;我们提供了全面的账号及视频Top 10的数据统计服务。 2、在AI视频创意制作领域&#xff0c;我们采用原创视频批量剪辑、阶乘算法和去重原理&#xff0c;以提升内容的独特性和吸引力。 3、同…

腾讯发布2024大模型十大最新趋势!

近日&#xff0c;在2024世界人工智能大会上&#xff0c;腾讯正式发布了《2024大模型十大趋势——走进“机器外脑”时代》报告。目前&#xff0c;这一报告正在AI产业界各大社群快速传播。 报告中&#xff0c;腾讯研究院试图通过10个关键性的趋势&#xff0c;去理解全世界范围内正…

【Ubuntu】windows和Linux文件互传、共享

【Ubuntu】windows和Linux文件互传、共享 一、FTP、SAMBA、NFS简介 FTP: File Transfer Protocol&#xff08;文件传输协议) SAMBA: 基于SMB(Server Message Block服务器消息块)协议的软件实现 NFS: Network File System&#xff08;网络文件系统&#xff09; 二、Linux 共享文…

无法下载 https://mirrors./ubuntu/dists/bionic/main/binary-arm64/Packages

ubuntu系统执行sudo apt update命令的时候&#xff0c;遇到如下问题&#xff1a; 忽略:82 https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-backports/universe arm64 Packages 错误:81 https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-backports/main arm64 Packa…

算法013:水果成篮

水果成篮. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/fruit-into-baskets/ 这道题题目很长&#xff0c;仔细阅读过后&#xff0c;我们其实可以简化成&#xff…

202488读书笔记|《365日创意文案》——无聊的 到底是这世间, 还是自己?懂得忘却的人才能前进

202488读书笔记|《365日创意文案》——无聊的 到底是这世间&#xff0c; 还是自己&#xff1f;懂得忘却的人才能前进 1月2月3月4月5月6月7月8月9月10月11月12月 《365日创意文案》WRITES PUBLISHING&#xff0c;一些日常&#xff0c;是烟火&#xff0c;也是幸福的印记。 当下也…

昇思学习打卡-8-FCN图像语义分割

目录 FCN介绍FCN所用的技术训练数据的可视化模型训练模型推理FCN的优点和不足优点不足 FCN介绍 FCN主要用于图像分割领域&#xff0c;是一种端到端的分割方法&#xff0c;是深度学习应用在图像语义分割的开山之作。通过进行像素级的预测直接得出与原图大小相等的label map。因…