冒泡排序法的设计思路
冒泡排序是把数组从前往后变成由小到大的排序方式,它的具体实现如下:
- 用sizeof()来计算数组元素的个数的方法
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<windows.h>
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9 };
int length = 0;
length = sizeof(arr) / sizeof(arr[0]);
printf("数组的长度为: %d\n", length);
system("pause");
return 0;
}
2.交换两个数的方法
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<windows.h>
int main()
{
int i = 1;
int j = 3;
int tmp = 0;
//交换两数
tmp = i;
i = j;
j = tmp;
printf("%d\n%d\n", i, j);
system("pause");
return 0;
}
3.冒泡排序的函数实现
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<windows.h>
void BubbleSort(int arr[],int sz)
{
int i = 0;
//确定冒泡排序的趟数
for (i = 0; i < sz-1; i++)
{
int flag = 1;
int j = 0;
for (j = 0; j < sz-1-i; j++)
{
if (arr[j] > arr[j + 1])
{
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
flag = 0;
}
}
if (flag == 1)
{
break;
}
}
}
void PrintArr(int arr[], int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
int main()
{
int arr[10] = {10,9,8,7,6,5,4,3,2,1};
int sz = sizeof(arr) / sizeof(arr[0]);
// 写 - 一个冒泡排序函数,将数组arr排成升序
PrintArr(arr, sz);
BubbleSort(arr, sz);
PrintArr(arr, sz);
system("pause");
return 0;
}
ps:需要注意的是在计算数组个数时由于数组传给函数的是一个指针,所以不能在函数中计算数组的个数,在主函数中计算即可。