我是C ++的初学者,在此作业中,我制作了一个程序,该程序使用存储桶排序算法对给定数组进行升序排序。在使用向量库以及表达用于包含数组的变量时,我遇到了许多错误。
存储桶类型的自然数是否有更简单的实现?我发现的示例使用存储桶排序对字母小数进行排序...等等,这使我难以理解应用于正整数的基本知识。
#include <iostream>
#include <cmath>
#include <vector>
#include <algorithm>
//function declaration
void display(int arr[], int size);
int getMax(int arr[], int size);
void bucketSort(int arr[], int size);
using namespace std;
void display(int arr[], int size) {
int i, m;
for(i = 0; i < size; i++) {
cout << m; {
m = arr[i];
}
}
return m;
}
void bucketSort(int arr[], int size) {
//variables
int max, bucket = 10, divider, i, j, k;
//10 buckets
vector B[bucket];
//find max and min
max = getMax(arr, size);
divider = ceil(float(max + 1) / bucket);
//insert element into bucket
for(i = 0; i < size; i++) {
j = floor( arr[i] / divider );
B[j].push_back(arr[i]);
}
//sort elements in the buckets
for(i = 0; i < bucket; i++) {
sort(B[i].begin(), B[i].end());
}
//append back the elements from the buckets
k = 0;
for(i = 0; i < bucket; i++) {
for(j = 0; j < B[i].size(); j++) {
arr[k++] = B[i][j];
}
}
}
int main(void) {
//unsorted elements
int arr[] = {22,45,12,8,10,6,72,81,33,18,50,14};
//size of the array
int n = sizeof(arr)/sizeof(arr[0]);
//output unsorted elements
display(arr, n);
//sort the elements
bucketSort(arr, n);
//display sorted elements
display(arr, n);
return 0;
}
答案 0 :(得分:2)
您不能只问一个向量...您必须告诉它,一个什么?
的向量在您的情况下,您似乎需要driver.Quit();
s的向量数组,所以:
int
您的下一个问题是您不能拥有可变大小的数组。
有关所有这些内容的更多信息,请参考您的C ++书。