排序矢量元素

时间:2014-08-25 22:36:34

标签: c++ sorting vector

我如何使用sort()函数将第i个索引的矢量元素排序到第j个索引。我有一个向量,其元素是{3,1,2,4,5,7,6,10,9我希望从第i个索引到第j个索引进行排序。我已经这样做了:

#include<algorithm>
#include<vector>
#include<iostream>
using namespace std;
int main()
{
    vector<int>vc;
    vc.push_back(10);
    vc.push_back(9);
    vc.push_back(8);
    vc.push_back(7);
    vc.push_back(6);
    vc.push_back(5);
    vc.push_back(4);
    vc.push_back(3);
    vc.push_back(2);
    sort(vc.begin()+2,vc.begin()+6);
    for(int i=0;i<9;i++)
    cout<<vc[i]<<" ";
}

但它没有排序。我只想对中间元素进行排序。我怎么能这样做?

2 个答案:

答案 0 :(得分:4)

也许您对end的{​​{1}}参数感到困惑。它不是序列的最后一个元素,它是过去的最后一个元素。因此,您正在尝试对已经排序的元素3,4和5进行排序 - 您将看不到任何更改。

答案 1 :(得分:-1)

一个简单的冒泡排序实现。您可以使用它来排序而不是使用 的std ::排序。虽然速度较慢,但​​此算法为O(n^2)

注意:这没有错误检查,这是完美输入

 void sortMid(vector<int> &vec, int s, int e){

    int temp;
    for(int i = s; i < e; i++){
      for(int j = s; j<e; j++){
        if(vec[s+1] > vec[j]){
           temp = vec[j];
           vec[j]=vec[j+1];
           vec[j+1] = temp;
        }
      }
    }
  }