2 条题解

  • 0
    @ 2025-2-11 18:21:36

    快速排序方法:

    #include <bits/stdc++.h>
    using namespace std;
    
    // 快速排序的递归实现
    void quickSort(vector<int>& arr, int low, int high) {
        if (low < high) {
            // 选择一个基准元素并对其进行分区
            int pivot = arr[high];  // 选择数组的最后一个元素作为基准
            int i = low - 1;  // i指向小于基准的部分的最后一个元素
    
            for (int j = low; j < high; j++) {
                if (arr[j] < pivot) {
                    i++;
                    swap(arr[i], arr[j]);  // 将小于基准的元素交换到前面
                }
            }
    
            swap(arr[i + 1], arr[high]);  // 将基准元素放到正确的位置
            int pi = i + 1;
    
            // 对基准元素左侧和右侧的部分递归进行快速排序
            quickSort(arr, low, pi - 1);
            quickSort(arr, pi + 1, high);
        }
    }
    
    int main() {
        int n;
        cin >> n;  // 输入随机数的个数
        vector<int> numbers(n);
    
        for (int i = 0; i < n; i++) {
            cin >> numbers[i];  // 输入随机数
        }
    
        // 使用 set 去重
        set<int> uniqueNumbers(numbers.begin(), numbers.end());
    
        // 将去重后的元素放入一个新的vector
        vector<int> sortedNumbers(uniqueNumbers.begin(), uniqueNumbers.end());
    
        // 使用快速排序对去重后的数列进行排序
        quickSort(sortedNumbers, 0, sortedNumbers.size() - 1);
    
        // 输出不相同的随机数个数
        cout << sortedNumbers.size() << endl;
    
        // 输出排序后的数列
        for (int i = 0; i < sortedNumbers.size(); i++) {
            if (i != 0) cout << " ";  // 输出时数字间空格分隔
            cout << sortedNumbers[i];
        }
        cout << endl;
    
        return 0;
    }
    
    
    • 0
      @ 2024-11-11 14:57:04

      set结构:

      #include <bits/stdc++.h>
      using namespace std;
      
      set<int> st;
      
      int main() {
          int n;
          cin >> n;
          while (n--) {
              int t; cin >> t;
              st.insert(t);
          }
          cout << st.size() << endl;
          for (auto it = st.begin(); it != st.end(); it++) {
              if (it != st.begin()) cout << " ";
              cout << *it;
          }
          return 0;
      }
      
      
      • 1

      信息

      ID
      664
      时间
      1000ms
      内存
      256MiB
      难度
      10
      标签
      递交数
      5
      已通过
      4
      上传者