🧛♂️iecne个人主页::iecne的学习日志
💡每天关注iecne的作品,一起进步
💪一起学习,必看iecne
🐳希望大家多多支持🥰一起进步呀!
文章目录
一.分析通讯录
首先制作一款通讯录我们可以将它分为以下部分
增加联系人
删除联系人
查找联系人
修改联系人
打印通讯录
排序通讯录
这一期我们就来实现准备删除查找与修改
二.流程图
由于结构体和枚举很难,使用简单的数组在整个排序的过程中就显得十分困难。所以在对字母排序的时候我们可以这样做,看下图:
Created with Raphaël 2.2.0
开始
判断人数
来到SORT函数
将所有转化成acsll码
冒泡排序
回到开始页面
通知错误
yes
no
三.代码实现
3.1 判断人数
当然零数量的肯定不能参与排序,否则要出大乱子
voidSortCon(){if(z ==0){printf("通讯录中没有联系人\n");}else{SORT();printf("排序成功!\n");}}
3.2 SORT函数
这里我们判断是否大写小写
因为大写的字母和小写的字母的ASCLL码是不同的,相应剪掉的值也不同
voidSORT(){for(int i =1; i <= z; i++){if(namez[i][0]>='a'&& namez[i][0]<='z')
nameaz[i]= namez[i][0]-96;elseif(namez[i][0]>='A'&& namez[i][0]<='Z')
nameaz[i]= namez[i][0]-64;else
nameaz[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<stdio.h>#define N 10Swap(int*p1,int* p2){int tmp =*p1;*p1 =*p2;*p2 = tmp;}voidPrint(int*a){for(int i=0;i<N;i++){printf("%d ",a[i]);}}voidBubbleSort(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;}}}intmain(){int a[N]={0};for(int i=0;i<N;++i){
a[i]=rand();}BubbleSort(a,N);Print(a);return0;}
五.InsertSort
从我们储存的数字字母数组排序,每排一个,同样所有数据都排序,这样就形成了我们一个排多个的数组冒泡交换排序,从而做到我们的效果
代码如下
voidInsertSort(){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大只能这样longlongint tmp;
tmp =phonez[j];
phonez[j]= phonez[j +1];
phonez[j +1]= tmp;}}}}
最后想要代码的关注iecne,点击主页资源里找找
总结
今天我们实现了通讯录的教程,至此该课示例的思想博主已经真真切切彻彻底底分享完了,相信大家对这个逻辑有了一定的理解,大家可以自己动手敲敲代码,感受一下,包教包会。若有任何侵权和不妥之处,请私信于我,定积极配合处理,看到必回!!!
帅的人已然点赞收藏关注,而丑的人还在犹豫,被犹豫了,快三连吧!
原创不易,还希望各位大佬支持一下
点赞,你的认可是我创作的动力!
收藏,你的青睐是我努力的方向!
评论,你的意见是我进步的财富!
感谢每一个观看本篇文章的朋友,更多精彩敬请期待~( ̄▽ ̄~)~:
iecne的博客
若有任何侵权和不妥之处,请私信于我,定积极配合处理,看到必回!!!
版权归原作者 iecne 所有, 如有侵权,请联系我们删除。