前言
冒泡排序:实现一个对整形数组的排序
使用冒泡排序对数组进行升序排序
[c语言代码]代码程序在文章末尾
如果有帮助,还请各位小伙伴多多点赞关注收藏,后期会持续进行更新!!!
目录
(小编很懒~~~)
代码思路讲解(逐步讲解)
使用冒泡排序的次数
数组有n个元素(这里以数组里有10个整形元素)
就要进行n-1次冒泡排序(就要进行9次冒泡排序)
要进行9趟冒泡排序 ,用for循环语句进行,代码如下
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);//对数组元素计算 sz=10
for (i = 0; i < sz - 1; i++)//数组里有10个元素,要进行9套冒泡排序
{
//这里是一趟冒泡循环代码
}
第一趟冒泡排序
(这里用有序数组进行讲解,方便进行理解)
这里 9 在第一位 要完成升序 9应该在最后一位
9与8进行比较 如果前一个数字比后一个数字大进行交换
9从第一位到最后要进行9次交换
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);//对数组元素计算 sz=10
for (i = 0; i < sz - 1; i++)//数组里有10个元素,要进行9套冒泡排序
{
int j = 0;
for (j = 0; j <sz-1-i ; j++)//第一套冒泡排序要进行9次,第二套8次,用减i来进行递减;
{
if (arr[j] > arr[j + 1])
{
int tem = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tem;
}
}
}
第二趟冒泡排序
这里9是数组里最大的元素,通过一趟冒泡排序到了最后一位,现在进行0~8之间的排序
8是数组中第二大的应该在倒数第二位
要进行8次交换
...
以下依次冒泡排序进行少一次交换
运行结果
代码实现
【编译器vs2019】
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void mpao(int arr[10],int sz)
{
int i = 0;
for (i = 0; i < sz - 1; i++)//数组里有10个元素,要进行9套冒泡排序
{
int j = 0;
for (j = 0; j <sz-1-i ; j++)//第一套冒泡排序要进行9趟,第二套8趟,用减i来进行递减;
{
if (arr[j] > arr[j + 1])
{
int tem = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tem;
}
}
}
}
int main()
{
int arr[10] = {0};
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);
for (i = 0; i < sz; i++)
{
scanf("%d", &arr[i]);
}
mpao(arr,sz);
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
return 0;
}