c++ - 如何使用插入排序对向量进行排序?
问题描述
我只是在练习使用向量实现选择排序。但它返回的向量与我作为输入给出的向量相同。
此实现适用于数组但不适用于向量。
#include<bits/stdc++.h>
using namespace std;
vector<int> insertionSort(vector<int> v, int n)
{
for(int i=1;i<=n-1;i++)
{
int currentEle = v[i];
int prevEle = i-1;
// right index where current is inserted
while(prevEle>=0 and v[prevEle]>currentEle){
v[prevEle+ 1] = v[prevEle];
prevEle = prevEle-1;
}
v[prevEle+1] = currentEle;
}
return v;
}
int main()
{
int n;
cin>>n;
vector<int> v(n);
for(int i=0;i<n;i++)
{
cin>>v[i];
}
insertionSort(v,n);
for(auto x: v)
{
cout<<x<<" ";
}
//OUTPUTS
Input : 5 3 1 2 4
Expected Output : 1 2 3 4 5
My Output : 5 3 1 2 4
有没有使用相同算法使用选择排序对向量进行排序的特定方法?
解决方案
您没有将返回的向量存储insertionSort
到任何东西中。
你可以做:
std::vector<int> result = insertionSort(v,n);
代替:
insertionSort(v,n);
然后打印result
而不是v
for (auto &x : result) {
std::cout << x << " ";
}
其他一些与问题无关但有帮助的观点。
推荐阅读
- python - 我如何使用字符串索引来挑出多元素列表/或元组中的第一个字母
- javascript - Vue 的响应式更改数据类型
- asp.net-mvc - ASP.NET MVC 数据标签无法使用 Syncfusion 图表
- c - 我无法在我的 C 程序中清除此内存泄漏
- c# - 如何制作 Blazor 页面互斥锁
- javascript - JavaScript ES6+ 比较对象数组中的字段
- c# - Blazor 事件仅在调试时正常工作
- server - Jupyter 似乎连接正常,但无法在浏览器中访问
- c# - 棋盘游戏的 int 数组
- pine-script - 在 pinescript 警报中,有什么方法可以检测图表的时间范围,然后根据它发送警报?