//冒泡排序 //14个数字排序:14个数的组合:14*13/2=91次 理论上比较91次 ,实际只有39次进行了变量交换 #include <stdio.h> void bubble_sort(int arr[], int len) { int i, j, temp,ci=0,sjci=0; for (i = 0; i < len - 1; i++) for (j = 0; j < len - 1 - i; j++) { ci++; if (arr[j] > arr[j + 1]) { sjci++; temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } printf("理论次数=%d,实际交换次数=%d\n",ci,sjci); } int main() { int arr[] = { 22, 34, 3, 32, 82, 55, 89, 50, 37, 5, 64, 35, 9, 70 }; int len = (int) sizeof(arr) / sizeof(*arr); printf("%d,%d,%d\n",len,sizeof(arr),sizeof(*arr)); bubble_sort(arr, len); int i; for (i = 0; i < len; i++) { printf("%d ", arr[i]); } return 0; }
原文:https://www.cnblogs.com/xkdn/p/14915250.html