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

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

#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; // 交换}//endifm--;}//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.mzph.cn/pingmian/41829.shtml

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

相关文章

vue3+vite搭建第一个cesium项目详细步骤及环境配置(附源码)

文章目录 1.创建vuevite项目2.安装 Cesium2.1 安装cesium2.2 安装vite-plugin-cesium插件&#xff08;非必选&#xff09;2.3 新建组件页面map.vue2.4 加载地图 3.完成效果图 1.创建vuevite项目 打开cmd窗口执行以下命令&#xff1a;cesium-vue-app是你的项目名称 npm create…

【LeetCode:3101. 交替子数组计数 + 滑动窗口 + 数学公式】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

转盘输入法-键盘加鼠标版本

序 转盘输入法&#xff0c;给你的聊天加点新意。它不用常见的九宫格或全键盘&#xff0c;而是把字母摆在圆盘上&#xff0c;一滑一滑&#xff0c;字就出来了&#xff0c;新鲜又直接。 键盘加鼠标版本GIF演示 演示软件下载 转盘输入法PC演示版本EXE下载https://download.csdn…

Unity编辑器扩展之Inspector面板扩展

内容将会持续更新&#xff0c;有错误的地方欢迎指正&#xff0c;谢谢! Unity编辑器扩展之Inspector面板扩展 TechX 坚持将创新的科技带给世界&#xff01; 拥有更好的学习体验 —— 不断努力&#xff0c;不断进步&#xff0c;不断探索 TechX —— 心探索、心进取&#xff…

MySQL主从复制_腾讯云

腾讯云-CVM自建基于GTID复制的mysql作为CDB的从库 腾讯云MySQL主库SQL操作 # 查看log_bin日志是否启动成功 SHOW VARIABLES LIKE %log_bin%;# 查看主库是否开启了GTID功能 SHOW GLOBAL VARIABLES LIKE %gtid_mode%; # 创建用户并授权 mysql> CREATE USER user_repl % IDENT…

GPU 资源池化云平台解决方案​

目录 Kubernetes 一、Kubernetes平台概述 二、举例说明 三、结论 运营商行业算力池化解决方案 企业级GPU 资源池化云平台解决方案​ Kubernetes (简称k8s或kube)是一个可移植、可扩展的开源平台,专门用于管理容器化的工作负载和服务。它是由Google开发并贡献给开源社…

前后端分离Nginx

背景 旧的部署方式是将前端代码打包进后端包的resource server {listen 80;listen 443 ssl;server_name xxx.test.com;location / {proxy_pass http://xxx.test.com;} }后端&#xff1a;https:// xxx.test.com/simcard/querySimcard 前端&#xff1a;https:// x…

阿里云服务器配置、搭建(针对Spring boot和MySQL项目)

这是一篇极其详细且痛苦的文章&#xff0c;还是在两位后端的大佬手把手教导下、以及我找遍全网所有资料、问了N遍AI、甚至直接申请阿里云工单一对一询问客服一整天、连续清空再上传反复30多次整个项目jar包......总结出来的终极要人命踩坑的问题总结 一、首先购买服务器 其实不…

Java的JSONPath(fastjson)使用总结

背景 最近使用json实现复杂业务配置, 因为功能需要解析读取json的中节点数据。如果使用循环或者stream处理&#xff0c;可以实现&#xff0c;但是都过于麻烦。在想能否使用更简单json读取方式&#xff0c;正好发现fastjson支持该功能&#xff0c;本文做一个记录 案例说明 示…

磁盘分区工具 -- 傲梅分区助手 v10.4.1 技术员版

软件简介 傲梅分区助手是一款功能强大的磁盘分区工具&#xff0c;它专为Windows系统设计&#xff0c;帮助用户更高效地管理他们的硬盘。该软件支持多种分区操作&#xff0c;包括创建、格式化、调整大小、移动、合并和分割分区。此外&#xff0c;它还提供了复制硬盘和分区的功能…

06-6.4.4 拓扑排序

&#x1f44b; Hi, I’m Beast Cheng &#x1f440; I’m interested in photography, hiking, landscape… &#x1f331; I’m currently learning python, javascript, kotlin… &#x1f4eb; How to reach me --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以…

java基础:方法

一、方法 1、Java方法是语句的集合&#xff0c;它们在一起执行一个功能。 方法是解决一类问题的步骤的有序集合方法包含于类或对象中方法在程序中被创建&#xff0c;在其他地方被引用 2、设计方法的原则&#xff1a;方法的本意是功能块&#xff0c;就是实现某个功能的语句块…

如何选择一家适合自己的商城源码?

商城源码的选择取决于多个因素&#xff0c;包括商城的功能需求、稳定性、易用性、可定制性以及价格等。启山智软作为在市场上被广泛认可且表现优异的商城源码提供商&#xff0c;具有以下的特点和优势&#xff1a; 特点①&#xff1a;国内知名的B2B2C开源商城源码系统&#xff…

python多线程与多进程开发实践及填坑记(3)

1. 前言 1.1. 概述 基于Flask、Pika、Multiprocessing、Thread搭建一个架构&#xff0c;完成多线程、多进程工作。具体需求如下&#xff1a; 并行计算任务&#xff1a;使用multiprocessing模块实现并行计算任务&#xff0c;提高计算效率、计算能力。消息侦听任务&#xff1a…

BufferReader/BufferWriter使用时出现的问题

项目场景&#xff1a; 在一个文件中有一些数据&#xff0c;需要读取出来并替换成其他字符再写回文件中&#xff0c;需要用Buffer流。 问题描述 文件中的数据丢失&#xff0c;并且在读取前就为空&#xff0c;读取不到数据。 问题代码&#xff1a; File f new File("D:\\…

Python排序,你用对了吗?一文教你sorted和sort的正确姿势!

目录 1、sorted基础用法 🍏 1.1 列表排序入门 1.2 自定义排序规则 1.3 排序稳定性和key函数 2、sort内置方法操作 🔍 2.1 直接修改原列表 2.2 sort高级技巧与性能考量 2.3 案例:数据预处理实战 2.4 高级用法:reverse与cmp_to_key 3、应对复杂数据结构 🌐 3.1…

递归与分治算法-以高校学生就业管理系统为例

1.递归算法介绍 递归是一种在问题解决过程中自我调用的算法技术。一个递归函数会调用自身来解决问题的一个更小的部分。递归算法通常具有以下特点&#xff1a; 基本情形&#xff08;Base Case&#xff09;&#xff1a;递归必须有一个或多个基本情形&#xff0c;这样递归调用才…

Yolo系列再次更新——清华发布Yolov10端到端实时对象检测模型

前期我们刚介绍过Yolo系列模型,还以为Yolov9刚刚发布,也许今年不会再有什么更新。但是没有想到打脸如此之快,Yolov10端到端实时对象检测模型强势回归发布。Yolov10端到端实时对象检测 YOLOv10 是清华大学研究人员在YOLO软件包的基础上,引入了一种新的实时目标检测方法,解决…

python excel openpyxl

python excel LTS 在开始之前&#xff0c;确保已经安装了 Python 和所需的库。 主要使用以下库&#xff1a; openpyxl&#xff1a;用于读取和写入 Excel 文件。 pandas&#xff1a;用于数据处理和分析。 xlwings&#xff1a;用于将 Python 与 Excel 连接&#xff0c;实现双向…

从vs中删除自带的Microsoft Git Provider

vs自带的Git Provider非常不好用&#xff0c;每一次在Tools里面把Source Control调节成None&#xff0c; 下一次打开&#xff0c;又是Git Provider Make sure Visual Studio is closedOpen regeditNavigate to HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0_Confi…