以下是冒泡排序的 C++ 代码实现: ```cpp #include <iostream> using namespace std; // 冒泡排序函数 void bubbleSort(int arr[], int n) { int temp; int swapCount = 0; for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; cout << "Swap " << swapCount << " : " << arr[j] << " and " << arr[j + 1] << endl; swapCount++; } } cout << "Iteration " << i << endl; } cout << "Total swaps: " << swapCount << endl; } // 打印数组函数 void printArray(int arr[], int size) { for (int i = 0; i < size; i++) cout << arr[i] << " "; cout << endl; } // 测试案例 int main() { int arr[] = {70, 33, -59, 16, -56, 63, 80, -21, 75, -5, 90, -4, 72, -61, -39, -97, 44, 9, 18, 14}; int n = sizeof(arr) / sizeof(arr[0]); cout << "Bubble Sort" << endl; bubbleSort(arr, n); cout << "Sorted array: "; printArray(arr, n); return 0; } ``` 以下是直接插入排序的 C++ 代码实现: ```cpp #include <iostream> using namespace std; // 直接插入排序函数 void insertionSort(int arr[], int n) { int key, j; for (int i = 1; i < n; i++) { key = arr[i]; j = i - 1; while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j]; j = j - 1; } arr[j + 1] = key; cout << "Number " << arr[i] << " inserts at position " << j + 1 << endl; } } // 打印数组函数 void printArray(int arr[], int size) { for (int i = 0; i < size; i++) cout << arr[i] << " "; cout << endl; } // 测试案例 int main() { int arr[] = {70, 33, -59, 16, -56, 63, 80, -21, 75, -5, 90, -4, 72, -61, -39, -97, 44, 9, 18, 14}; int n = sizeof(arr) / sizeof(arr[0]); cout << "Insertion Sort" << endl; insertionSort(arr, n); cout << "Sorted array: "; printArray(arr, n); return 0; } ``` 额外需要注意的逻辑点: 1. 注意代码中的边界情况,例如数组为空或只有一个元素的情况。 2. 对于排序算法的时间和空间复杂度的分析要准确。 3. 确保代码的可读性和可维护性,添加必要的注释。 [2025-01-10 13:19:29 | AI写代码神器 | 859点数解答]