C++ C++;尝试插入排序失败?
这段代码是维基百科上伪代码的直接翻译。但它不交换任何元素。有人能告诉我发生了什么事吗C++ C++;尝试插入排序失败?,c++,sorting,insertion-sort,C++,Sorting,Insertion Sort,这段代码是维基百科上伪代码的直接翻译。但它不交换任何元素。有人能告诉我发生了什么事吗 #include<iostream> #include<string> #include<fstream> #include<cctype> #include<vector> using namespace std; void sortowanie(vector<int> v) { for(int i=1; i<=(int)
#include<iostream>
#include<string>
#include<fstream>
#include<cctype>
#include<vector>
using namespace std;
void sortowanie(vector<int> v)
{
for(int i=1; i<=(int)v.size()-1; i++)
{
for(int j=i; j>0; j--)
{
if(v[j-1] > v[j])
{
int x = v[j-1];
v[j-1] = v[j];
v[j] = x;
}
else
{
break;
}
}
}
}
int main()
{
vector<int> v;
v.push_back(4);
v.push_back(2);
v.push_back(15);
v.push_back(234);
v.push_back(21);
v.push_back(6);
v.push_back(3);
v.push_back(53);
v.push_back(23);
v.push_back(1);
sortowanie(v);
for(int i=0; i<=(int)v.size()-1; i++)
{
cout << " -> " << v[i];
}
cout << endl;
return 0;
}
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
void sortowanie(向量v)
{
对于(int i=1;i0;j--)
{
如果(v[j-1]>v[j])
{
int x=v[j-1];
v[j-1]=v[j];
v[j]=x;
}
其他的
{
打破
}
}
}
}
int main()
{
向量v;
v、 推回(4);
v、 推回(2);
v、 推回(15);
v、 推回(234);
v、 推回(21);
v、 推回(6);
v、 推回(3);
v、 推回(53);
v、 推回(23);
v、 推回(1);
索托瓦尼(五);
对于(int i=0;i您正在通过值传递std::vector
,因此将创建一个副本,并且仅对该副本进行更改:
void sortowanie(vector<int> v)
完整代码:
#include<iostream>
#include<vector>
using namespace std;
void sortowanie(vector<int>& v)
{
for(size_t i = 1; i < v.size(); i++)
{
for(int j = i; j > 0; j--)
{
if(v[j-1] > v[j]) { swap(v[j-1], v[j]); }
else {break;}
}
}
}
int main()
{
vector<int> v({4,2,15,234,21,6,3,53,23,1});
sortowanie(v);
for(int x : v)
{
cout << x << " ";
}
cout << "\n";
return 0;
}
#包括
#包括
使用名称空间std;
void sortowanie(vector&v)
{
对于(size_t i=1;i0;j--)
{
如果(v[j-1]>v[j]){swap(v[j-1],v[j]);}
else{break;}
}
}
}
int main()
{
向量v({4,2,15234,21,6,3,53,23,1});
索托瓦尼(五);
用于(整数x:v)
{
你不能按值传递向量,所以只对一个副本进行排序。改为按引用传递。更改一个字符后,我得到的输出是->1->2->3->4->6->15->21->23->53->234
(int i=1;i@user4581301嗯,我可以问一下如何进一步改进上面的代码吗?我对缩短和清理代码并不太熟悉,主要是关于的。一个旁注是转换。如果更改索引变量的类型,转换的需要就会消失。(size\u t i=1;iSmurf。我把流氓=
留在那里。代码应该是(size\u t i=1;i)的
#include<iostream>
#include<vector>
using namespace std;
void sortowanie(vector<int>& v)
{
for(size_t i = 1; i < v.size(); i++)
{
for(int j = i; j > 0; j--)
{
if(v[j-1] > v[j]) { swap(v[j-1], v[j]); }
else {break;}
}
}
}
int main()
{
vector<int> v({4,2,15,234,21,6,3,53,23,1});
sortowanie(v);
for(int x : v)
{
cout << x << " ";
}
cout << "\n";
return 0;
}