C++课暑假集训第2天作业答案 编程题第一道:水仙花数 (但是照片,请大家转为文字版✊✊✊)

2 条评论

  • 第二题发个详细一点的

    • @ 2025-7-11 17:34:51

      第二题: #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