大家好,欢迎来到IT知识分享网。
1 一维数组
2 冒泡的概念
3 代码实现
1一维数组
一维数组 :存放字符型数据的数组
一维数组的定义
首先 定义int arr[5](int类型的一维数组 ), 5 是数组的长度 也就是大小 但是我们 在访问数组元素的地址 时候, 不存在 有 arr[5]
也就是说 定义arr[5]只是 为了 让你知道这个数组大小是 5 而已 我们在访问 数组的元素地址时候 是用下标来访问的 (从0开始 ) 上述的两种定义的方法 都可以适用 在我们的元素长度和数组大小对不上时 他们自动补充 元素 我们有个这些概念之后 后面讲到的理解起来 都不会很吃力
2 冒泡 的概念
拿图中的五个数相比较 只要满足 前<后 我们就可以进行 交换 也就是 用下标法来比较
我们可以得出 我们拿五个数比较 第一轮 比较四次 得出 最大值 除去最大值 就是第二轮要比较的数 第二轮就是要比较 (比较的数量-1)就可以得本轮的最大值 其实第五轮 是没有比较的 因为只有一个数 (只是为了更直观 看到 全部 )
3 代码实现
计算 数组大小的 关键字 sizeof
计算公式
int len=sizeof(arr)/sizeof(arr[0]);
函数声明
void scan(int arr[],int len);
void MaoPao(int arr[],int len);
void print(int arr[],int len);
函数声明 只是为了 养成 良好的 编程习惯
输入函数
//输入函数
void scan(int arr[],int len)
{
for(int i=0;i<len;i++)
{
scanf("%d",arr+i);//输入五位数
}
因为 数组名就是 入口 地址 所以 我不用常规的方式 来写 输入函数 其实都一样的
冒泡排序
//冒泡 排序 函数
void MaoPao(int arr[],int len)
{
int temp;
for(int i=0;i<len-1;i++)
{
for(int j=0;j<len-i-1;j++)
{
if(arr[j]<arr[j+1])//满足条件 交换 到了下一次 并且 相应改变 位置
{
temp=arr[j]; //开始交换
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
i 是轮次 我拿了 五个 数 可以发现 我只用了 四轮 就完成了 大小排序
j是 比较的次数 第一轮 用了 四次 (最开始有五个数 )所以 要 长度-1-i
如果 不减i的话 会导致 每一轮的比较次数都是一样的 这个要特别注意
输出 函数
void print(int arr[],int len)
{
printf("大小排序是:\n");
for(int i=0;i<len;i++)
{
printf(" %d",*(arr+i));
}
}
这里再说一次 输入 和输出 能用 arr+i 和 *(arr+i) 写的原因 常规写法 应该分别是 &arr[I] 和 arr[i] 我们这里要知道一个概念 数组名就是数组 的入口地址(首地址)
主函数 的 调用
void main(void)//无参主函数
{
int arr[5];
int len;
len=sizeof(arr)/sizeof(arr[0]);//计算数组大小
scan(arr,len);//输入
MaoPao(arr,len);//排序
print(arr,len);//输出
}
最后结果
冲冲冲冲冲冲 !!!!!!!!!!!!!!!!!!!!!!!!
最 后 感 谢 大 家 的 阅 读
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/22874.html