-2
我正在尋找更少的內存消耗方式排序向量。 ATM我使用此解決方案:內存高效排序C++
void selectionSort(int arg[], int size){
for(int i = 0; i < size; i++){
int min = i;
for(int j = i+1; j < size+1; j++){
if(arg[j]<arg[min]){
min = j;
}
if(min != i){
int temp1 = arg[min];
int temp2 = arg[i];
arg[min] = temp2;
arg[i] = temp1;
}
}
}
}
int main(int argc, char *argv[])
{
vector<int> file;
ifstream in(argv[1]);
if(in.good())
{
string line;
while(getline(in, line)){
stringstream lineStream(line);
int value;
while(lineStream >> value){
file.push_back(value);
}
}
int * tab;
tab = new int [file.size()];
for(int i = 0; i < file.size(); i++){
tab[i] = file.at(i);
cout << tab[i] << ",";
}
cout << endl;
selectionSort(tab, file.size());
for(int n = 0; n < file.size(); n++){
cout << tab[n] << ",";
}
delete[] tab;
}
return 0;
}
是否有可能使用矢量,而不是說我像這樣使用動態數組? 我在輸出中獲得了不變的矢量。
void selectionSort(vector<int> arg){
for(int i = 0; i < arg.size(); i++){
int min = i;
for(int j = i+1; j < arg.size()+1; j++){
if(arg[j]<arg[min]){
min = j;
}
if(min != i){
int temp1 = arg[min];
int temp2 = arg[i];
arg[min] = temp2;
arg[i] = temp1;
}
}
}
}
這裏是主FUNC的片段:
selectionSort((file));
for(int n = 0; n < file.size(); n++){
cout << file.at(n) << ",";
}
}
return 0;
通過引用傳遞向量:'void selectionSort(vector&arg){'。你也可以簡單地使用'std :: sort()'。 –
謝謝!它現在完美無瑕。我正在學習排序方法atm,這就是爲什麼我不想使用它。 –