我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【C++实战小项目】通讯录(四) 冒泡排序通过string首字母排序多个数组

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【C++实战小项目】通讯录(四) 冒泡排序通过string首字母排序多个数组

在这里插入图片描述


iecne


🧛‍♂️iecne个人主页:iecne的学习日志
💡每天关注iecne的作品,一起进步
💪一起学习,必看iecne
🐳希望大家多多支持🥰一起进步呀!
iecne


在这里插入图片描述


文章目录


一.分析通讯录

首先制作一款通讯录我们可以将它分为以下部分

增加联系人
删除联系人
查找联系人
修改联系人
打印通讯录
排序通讯录

这一期我们就来实现准备删除查找与修改


二.流程图

由于结构体和枚举很难,使用简单的数组在整个排序的过程中就显得十分困难。所以在对字母排序的时候我们可以这样做,看下图:

Created with Raphaël 2.2.0 开始 判断人数 来到SORT函数 将所有转化成acsll码 冒泡排序 回到开始页面 通知错误 yes no

三.代码实现

3.1 判断人数

当然零数量的肯定不能参与排序,否则要出大乱子

void SortCon(){if (z == 0){printf("通讯录中没有联系人\n");}else{SORT();printf("排序成功!\n");}}

3.2 SORT函数

这里我们判断是否大写小写
因为大写的字母和小写的字母的ASCLL码是不同的,相应剪掉的值也不同

void SORT(){for (int i = 1; i <= z; i++){if (namez[i][0] >= 'a' && namez[i][0] <= 'z')nameaz[i] = namez[i][0] - 96;else if (namez[i][0] >= 'A' && namez[i][0] <= 'Z')nameaz[i] = namez[i][0] - 64;elsenameaz[i] = 27;}InsertSort();}

否则就设置为27,自动排序时间
因为我们剪掉值之后就成了A为1,B为2,这样的数值
接下来我们再传到InsertSort()


3.3 InsertSort函数

这里我们等会再说


四.冒泡排序

4.1 什么是冒泡排序?

冒泡排序的英文Bubble Sort,是一种最基础的交换排序。之所以叫做冒泡排序,因为每一个元素都可以像小气泡一样,根据自身大小一点一点向数组的一侧移动。

冒泡排序的原理:
每一趟只能确定将一个数归位。即第一趟只能确定将末位上的数归位,第二趟只能将倒数第 2 位上的数归位,依次类推下去。如果有 n 个数进行排序,只需将 n-1 个数归位,也就是要进行 n-1 趟操作。

而 “每一趟 ” 都需要从第一位开始进行相邻的两个数的比较,将较大的数放后面,比较完毕之后向后挪一位继续比较下面两个相邻的两个数大小关系,重复此步骤,直到最后一个还没归位的数。


4.2冒泡排序到底是如何排序的呢?

下面通过一个动图来看一看冒泡排序到底是怎么样移动的


4.3 用法

在这里插入图片描述
借保护小周ღ的语言说下
总之遇到大的交换

比较相邻的元素,如果前一个比后一个大,交换之。
第一趟排序第i个和第i+1个比较与交换,随后第i+1个和第i+2个一对比较交换,这样直到倒数第n-1个和最后n个,将最大的数移动到最后一位。
第二趟将第二大的数移动至倒数第二位

……

算法实现:

#define _CRT_SECURE_NO_WARNINGS#include#define N 10Swap(int *p1, int * p2){   int tmp = *p1;   *p1 = *p2;   *p2 = tmp;}void Print(int *a){   for (int i=0;i<N;i++)   {   printf("%d ",a[i]);   }}void BubbleSort(int* a, int n){      for (int j=0;j<n;++j)   {   int size = 0;   for (int i=1;i<N-j;++i)   {   if (a[i-1]>a[i])   {   Swap(&a[i-1],&a[i]);   size =1;   }   }   if (size==0)   {   break;   }   }}int main(){   int a[N] = {0};   for (int i=0;i<N;++i)   {   a[i] = rand();   }   BubbleSort(a,N);   Print(a);      return 0;}

五.InsertSort

从我们储存的数字字母数组排序,每排一个,同样所有数据都排序,这样就形成了我们一个排多个的数组冒泡交换排序,从而做到我们的效果
代码如下

void InsertSort(){int i;int j; for (i = 0; i < z - 1; i++) { //控制n-1趟冒泡for (j = 0; j < z - 1 - i; j++){//比较相邻的两个元素if (nameaz[j] > nameaz[j + 1]){ //交换swap(nameaz[j], nameaz[j + 1]);swap(namez[j], namez[j + 1]);swap(bgz[j], bgz[j + 1]);swap(agez[j], agez[j + 1]);swap(homez[j], homez[j + 1]);//phone大只能这样long long int tmp;tmp =phonez[j]; phonez[j] = phonez[j + 1];phonez[j + 1] = tmp;}}}}

最后想要代码的关注iecne,点击主页资源里找找


总结

今天我们实现了通讯录的教程,至此该课示例的思想博主已经真真切切彻彻底底分享完了,相信大家对这个逻辑有了一定的理解,大家可以自己动手敲敲代码,感受一下,包教包会。若有任何侵权和不妥之处,请私信于我,定积极配合处理,看到必回!!!

帅的人已然点赞收藏关注,而丑的人还在犹豫,被犹豫了,快三连吧!
原创不易,还希望各位大佬支持一下
点赞,你的认可是我创作的动力!
收藏,你的青睐是我努力的方向!
评论,你的意见是我进步的财富!
iecne


感谢每一个观看本篇文章的朋友,更多精彩敬请期待~( ̄▽ ̄~)~:
iecne的博客
若有任何侵权和不妥之处,请私信于我,定积极配合处理,看到必回!!!

iecne

来源地址:https://blog.csdn.net/CSDN_linyanchen/article/details/127020763

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【C++实战小项目】通讯录(四) 冒泡排序通过string首字母排序多个数组

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录