C语言基础数组作业(冒泡算法)
#include <stdio.h>void bubbleSort(int arr[], int size) {for (int i = 0; i < size - 1; i++) {for (int j = 0; j < size - i - 1; j++) {if (arr[j] > arr[j + 1]) {// 交换元素int temp = arr[j];//创建临时变量temp,保存arr[j]的值arr[j] = arr[j + 1];//将arr[j+1]的值赋给arr[j]arr[j + 1] = temp; //将temp中保存的原arr[j]值赋给arr[j+1]}}}
}void printArray(int arr[], int size) {for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}printf("\n");
}int main() {int numbers[] = { 5, 3, 8, 1 };int size = sizeof(numbers) / sizeof(numbers[0]);printf("排序前: ");printArray(numbers, size);bubbleSort(numbers, size);printf("排序后: ");printArray(numbers, size);getchar();return 0;
}
完整执行过程示例
数组为:[5, 3, 8, 1]
,size = 4
第1轮 (i = 0):
-
j=0: 比较5和3 → 交换 →
[3, 5, 8, 1]
-
j=1: 比较5和8 → 不交换 →
[3, 5, 8, 1]
-
j=2: 比较8和1 → 交换 →
[3, 5, 1, 8]
第2轮 (i = 1):
-
j=0: 比较3和5 → 不交换 →
[3, 5, 1, 8]
-
j=1: 比较5和1 → 交换 →
[3, 1, 5, 8]
第3轮 (i = 2):
-
j=0: 比较3和1 → 交换 →
[1, 3, 5, 8]
// 初始数组: [5, 3, 8, 1]
// 第1轮(i=0): 比较3次
// j=0: [5,3,8,1] → 5>3? 是 → 交换 → [3,5,8,1]
// j=1: [3,5,8,1] → 5>8? 否 → 不变 → [3,5,8,1]
// j=2: [3,5,8,1] → 8>1? 是 → 交换 → [3,5,1,8]// 第2轮(i=1): 比较2次
// j=0: [3,5,1,8] → 3>5? 否 → 不变 → [3,5,1,8]
// j=1: [3,5,1,8] → 5>1? 是 → 交换 → [3,1,5,8]// 第3轮(i=2): 比较1次
// j=0: [3,1,5,8] → 3>1? 是 → 交换 → [1,3,5,8]