1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 冒泡排序 C语言(从大到小排序)

冒泡排序 C语言(从大到小排序)

时间:2021-09-30 23:12:03

相关推荐

冒泡排序 C语言(从大到小排序)

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);//输出 }

最后结果

冲冲冲冲冲冲 !!!!!!!!!!!!!!!!!!!!!!!!

最 后感 谢 大 家 的 阅 读

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。