赞
踩
小伙伴们大家好 这次给大家分享 如何使用数组来实现冒泡排序
初学c语言的同学们一定会遇到这样的问题 在刚初学时难免会被难倒,希望看过这篇文章之后,可以对冒泡排序有一个更加深入的了解 完全的掌握
- #include<stdio.h>
- int main()
- {
- int arr[5] = { 1,3,5,2,4 };//定义一个整型数组,存放五个整型数据
- int i = 0;
- int j = 0;
- for (i = 0; i < 4; i++)
- {
- //趟数由i决定
- for (j = 0; j < 5-1-i; j++)
- {
- //j控制的是需要交换比较的数的多少
- if (arr[j] > arr[j + 1])//利用if语句来判断相邻两元素之间的大小
- {
- int tmp = arr[j+1];//创建临时变量,用来储存数据
- arr[j + 1] = arr[j];
- arr[j] = tmp;
- }
- }
- }
- for (i = 0; i < 5; i++)//利用for循环将数组进行打印
- {
- printf("%d ", arr[i]);
- }
- return 0;
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
首先冒泡排序的思想:两两相邻元素进行比较大小,有可能进行数据交换
话不多说上图来看
首先,对‘9’这个字符进行排序,按照升序,他已经到达自己应该待的位置
然后会得到一组新的元素,之后再进行一次新的排序
每次搞定一个数字,使它到达最终应该存在的位置,我们将此称为 一趟冒泡排序
这里需要注意一个很重要的点:因为交换比较大小是对两个数,所以例如我们有10个数字的话,只需要9趟便可以完成排列,同理 如果有n个数字,则需要n-1趟排列
另外 还有一个需要注意的点 这段代码
for循环中的第二条语句需要理解到位,即5个数字,需要交换排列四次即可完成排列,但是每当经过一次循环后,一个数字已经到达了他应该达到的位置,所以下次排列时无需再进行多余的一次排列,所以j控制的时需要交换比较的数的多少,需要用j-1-i;
好了,以上就是本次分享的内容,希望大家看完后会有收获,如果有什么疑问,欢迎在评论区留言或者私信我
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。