Algorithm Intro - Radix Sort

来源:互联网 发布:淘宝客教学视频 编辑:程序博客网 时间:2024/06/05 10:51




int get0to9(int n, int d)
{
    while(n != 0 && d > 0) {
        n /= 10; d--;
    }

    return n % 10;
}

void count_sort0to9(vector<int> &v, int index)
{
    int count[10];
    vector<int> b = v;

    for(int i = 0; i < 10; i++) count[i] = 0;

    for(int i = 0; i < v.size(); i++) {
        int d = get0to9(v[i], index);
        count[d]++;
    }

    for(int i = 1; i < 10; i++) count[i] += count[i - 1];

    for(int i = v.size() - 1; i >= 0; i--) {
        int d = get0to9(v[i], index);
        b[count[d] - 1] = v[i];
        count[d]--;
    }

    for(int i = 0; i < b.size(); i++) {
        cout << b[i] << " ";
    }
    cout << endl;

    v = b;
}


// d denote max components 10-base of number
// e.g. 77 => 2, 1001 => 4
void radix_sort(vector<int>&v, int d)
{
    for(int i = 0 ; i < d; i++) {
         count_sort0to9(v, i);
    }
}



0 0
原创粉丝点击