在矢量字符串向量上使用模板函数,冒泡排序仅部分排序

时间:2018-03-14 10:56:24

标签: c++ sorting vector bubble-sort

我的输出在下面,冒泡排序部分排序,'Battle Start Galatica'是一个字符串

排序前

  猫狗猴子梨熊击败甜菜战斗开始Galatica熊   熊是蜜蜂斑马哈密瓜仙人掌

排序后

  熊熊是熊击败甜菜战斗开始Galatica蜜蜂斑马   哈密​​瓜仙人掌猫狗猴子梨

你好,世界!

#include <iostream>
#include <vector>
#include "Sort.h"

int main() {
  std::vector<std::vector<std::vector<std::string> > >
  v1{ {{"cats", "dogs", "monkey", "pear"}, {"bears", "beat", "beets", 
        "Battle Start Galatica"}},
      {{"bear", "bears", "be"}, {"bee", "zebra"}, {"cantaloupe", 
        "cactus"}}};

  std::cout << "before sort" << std::endl;
  std::cout << v1 << std::endl;

  sort(v1);

  std::cout << "after sort" << std::endl;
  std::cout << v1 << std::endl;
  std::cout << "Hello, World!" << std::endl;
  return 0;
}

我将矢量转换为矢量并尝试对其进行排序 使用冒泡排序

template <typename T>
void sort(std::vector<T>& v)
{
  for(int i = 0; i < v.size();i++)
  {
      bool swapped = false;
      for(int j = 0; j < v.size()-i-1;j++)
      {
          if(v[j]>v[j+1])
          {
              swap(v,j,j+1);
              swapped = true;
          }
      }
      if(!swapped) break;
  }
}

使用以下交换方法

template <typename T>
void swap(std::vector<T>& v, int i, int j)
{
    T temp = v[i];
    v[i] = v[j];
    v[j] = temp;
}

除了泡泡之外,还有哪种方法可以完全排序或者使用什么方法?

0 个答案:

没有答案