#include <stdio.h>
//冒泡排序,就是升序排列
void maopao(int arr[],int sz) {
//每趟比较前后元素,将最大的元素放到末尾
//12个元素,需要比较11趟
int i = 0;
//趟数
for (i = 0; i < sz-1; i++) {
//前后元素比较,第一趟需要比较9次,第二趟只需要比较8次,......依次类推
int j = 0;
for (j = 0; j < sz - 1 - i; j++) {
//前一个元素>后一个元素,就交换值
int tmp;
if (arr[j] > arr[j + 1]) {
tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
int main() {
int arr[3][4] = { 4,2,8,6,9,3,2,1,0,7,3,5 };
int sz = sizeof(arr) / sizeof(arr[0][0]);
//因为实参数组本质上指针,所以在函数内计算sizeof(arr)的值是指向int的指针的长度,并不是数组的长度
//因此函数内部如果需要知道实参数组的长度,那么它必须作为一个显式的参数传递给函数。
maopao(arr,sz);//冒泡排序
//打印数组元素
int i = 0;
for (i = 0; i < 3; i++) {
int j = 0;
for (j = 0; j < 4; j++) {
printf("%d ",arr[i][j]);
}
}
return 0;
}
C语言-冒泡排序
于 2023-04-24 16:24:28 首次发布