- 题解
答案C++课暑假集训第2天作业答案
- 2025-7-11 17:11:08 @
C++课暑假集训第2天作业答案
编程题第一道:水仙花数
(但是照片,请大家转为文字版✊✊✊)
2 条评论
-
-
第二题: #include #include #include // 用于max_element using namespace std; // 冒泡排序 void bubbleSort(vector& arr) { int n = arr.size(); for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { swap(arr[j], arr[j + 1]); } } } }
// 插入排序 void insertionSort(vector& arr) { int n = arr.size(); for (int i = 1; i < n; i++) { int key = arr[i]; int j = i - 1; while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j]; j--; } arr[j + 1] = key; } }
// 选择排序 void selectionSort(vector& arr) { int n = arr.size(); for (int i = 0; i < n - 1; i++) { int minIdx = i; for (int j = i + 1; j < n; j++) { if (arr[j] < arr[minIdx]) { minIdx = j; } } swap(arr[i], arr[minIdx]); } }
// 桶排序 void bucketSort(vector& arr) { if (arr.empty()) return;
// 确定最大值 int maxVal = *max_element(arr.begin(), arr.end()); // 创建桶(0到maxVal) vector<int> buckets(maxVal + 1, 0); // 计数 for (int num : arr) { if (num >= 0 && num <= maxVal) { buckets[num]++; } } // 重新填充原数组 int idx = 0; for (int i = 0; i <= maxVal; i++) { while (buckets[i] > 0) { arr[idx++] = i; buckets[i]--; } }
}
// 打印数组 void printArray(const vector& arr) { for (int i = 0; i < arr.size(); i++) { cout << arr[i]; if (i < arr.size() - 1) cout << " "; } cout << endl; }
int main() { vector data = {11, 4, 55, 6, 77, 8, 9, 0, 7, 1};
// 冒泡排序 vector<int> data1 = data; bubbleSort(data1); cout << "Bubble Sort: "; printArray(data1); // 插入排序 vector<int> data2 = data; insertionSort(data2); cout << "Insertion Sort: "; printArray(data2); // 选择排序 vector<int> data3 = data; selectionSort(data3); cout << "Selection Sort: "; printArray(data3); // 桶排序 vector<int> data4 = data; bucketSort(data4); cout << "Bucket Sort: "; printArray(data4); return 0;
}
十分抱歉
- 1