c_cpp 将元素分组为k,然后对数组进行排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 将元素分组为k,然后对数组进行排序相关的知识,希望对你有一定的参考价值。

#include <bits/stdc++.h>
using namespace std;

bool cmp (pair <string, int> a, pair <string, int> b) {
    string c= a.first, d= b.first;
    if (c.length() < d.length())
        return 1;
    else if (c.length() > d.length())
        return 0;
    else
        return c<d;
}
int main() {
    int n, k;
    cin>>n>>k;
    vector <int> a(n);
    for (int i=0;i<n;i++)
        cin>> a[i];

    vector < pair <string, int> > v;//to store the grouped elements and starting index of group.
    int i=0;
    while (i<n) {// join the numbers in groups of k elements.
        int count= 0;
        string temp= "";
        while (count<k && i<n) {
            temp+= to_string(a[i]);
            i++;
            count++;
        }
        v.push_back(make_pair(temp, i-k));
    }
    sort (v.begin(), v.end(), cmp);//sort the newly formed numbers

    vector <int> b(n);
    i=0;
    int j=0;

    while (i<v.size()) {
        int t= v[i].second, count= 0;
        while (t<n && count<k) {
            b[j]= a[t];
            t++;
            j++;
            count++;
        }
        i++;
    }
    for(int i=0;i<n;i++)
        cout<<b[i]<<" ";
}

以上是关于c_cpp 将元素分组为k,然后对数组进行排序的主要内容,如果未能解决你的问题,请参考以下文章

查找与排序:计数排序

c_cpp 对几乎排序(或K排序)的数组进行排序,插入排序

c_cpp 找到大量数字中最大的k数。您无法对数组进行排序。

将javascript数组中的重复值分组在一起,然后按值名称升序对这些组进行排序

c_cpp 从两个排序的数组中获取第k个最小元素。数组中的前k个

对一个 n 元素数组进行排序,使前 k 个元素按升序排列最低(就地算法)