百分百自己编的程序,越来越觉得编程很好玩了。

但这算是第一次自己用vector这种不是那么无脑的方法编程,只能最多对3个数进行排序wwwww

今天我要回去搬宿舍了,等明天有时间,我一定要把bug找到!

----------------------------------------------------------------------------------------------分割线------------------------------------------------------------------------------------------------------------

就在刚刚我debug出来了!

【问题】之前的问题就在于我每一次按从小到大的顺序插入一个数时,由于这个数就在数组中,所以当我插入后整个数组就会多一个数,这个数之后的数就会统统向后移一位。所以我每次输入5个数的时候,就会看到第三个数在第四位上重复了,而后面的数在第6、7位置上,显示不出来,所以也就出现了后面的数显示不出来的情况。

【解决方法】每插入一个数,把这个数之前所在位置上的给删除(erase),问题就解决啦!

#include <iostream>
#include <vector> using namespace std; vector<int>a();
void sortt(int p,int q,int m,int k,int num)
{
  if(m<a[p]) {
   a.insert(a.begin()+p,m);
   a.erase(a.begin()+k);//按顺序插入之后,要把原来位置上的a[]给删除掉,才是一个完整的排序过程
  }
  else if(m>a[q]) {
   a.insert(a.begin()+q+1,m);
   a.erase(a.begin()+k);
  }
  else{
   if(q-p==1){
    a.insert(a.begin()+q,m);
    a.erase(a.begin()+k);
    }
   else{
    sortt(p+1,q-1,m,k,num);
   } 
  }
} int main() {
int num;
int cnt=;
cin >> num;
for(int i=;i<num;++i)
cin >> a[i];
if(a[]>a[])
{
int temp;
temp=a[];
a[]=a[];
a[]=temp;
}
for(int i=;i<num;++i){
sortt(,cnt,a[i],i+1,num);
cnt++;
}
for(int i=;i<num;++i)
cout << a[i] << " ";
return ;
}

【5】用vector进行直接插入排序的更多相关文章

  1. C++ 排序(未完)

    参考: 快速排序 堆排序 各类排序 #include <iostream> #include <vector> #include <time.h> #include ...

  2. 模板化的七种排序算法,适用于T* vector<T>以及list<T>

    最近在写一些数据结构以及算法相关的代码,比如常用排序算法以及具有启发能力的智能算法.为了能够让写下的代码下次还能够被复用,直接将代码编写成类模板成员函数的方式,之所以没有将这种方式改成更方便的函数模板 ...

  3. Java _ JDK _ Arrays, LinkedList, ArrayList, Vector 及Stack

    (最近在看JDK源码,只是拿着它的继承图在看,但很多东西不记录仍然印象不深,所以开始记录JDK阅读系列.) (一)Arrays Arrays比较特殊,直接继承自Arrays ->List(Int ...

  4. 排序算法总结(一)插入排序【Insertion Sort】

    最近在忙着找工作,以前看的排序算法都忘记了,悲剧啦T  T现在来回顾一下吧. 这边推荐一个算法可视化的网站,非常有用.http://visualgo.net/ 一.插入排序的思想(Wikipedia) ...

  5. 数据结构复习:直接插入排序与二分插入排序的C++实现

    1.直接插入排序 直接插入排序的过程可以理解为一个固定长度的数组被分为两个集合,即已排序集合和未排序. 开始时已排序集合为空,而未排序集合即为整个数组.当排序开始后插入一个对象,已排序集合元素数目加1 ...

  6. C++中的冒泡排序,选择排序,插入排序

    最简单的插入排序:思想,两两之间比较,时间复杂度o(n^2) void bubblesort(vector<int>&vec, int n) { if (&vec==NUL ...

  7. 插入排序(C++)

    插入排序(C++) 插入排序: 写这篇博文是为了增加对数据结构和算法的理解,同事增加编程的基本功. 当要对如下数据进行排序: 2,8,5,4,6,7,1 2,8,5,4,6,7,1    采用插入排序 ...

  8. 插入排序的优化非希尔【不靠谱地讲可以优化到O(nlogn)】 USACO 丑数

    首先我们先介绍一下普通的插排,就是我们现在一般写的那种,效率是O(n^2)的. 普通的插排基于的思想就是找位置,然后插入进去,其他在它后面的元素全部后移,下面是普通插排的代码: #include< ...

  9. 数据结构基础(3) --Permutation & 插入排序

    Permutation(排列组合) 排列问题: 设R = {r1, r2, ... , rn}是要进行排列的n个元素, Ri = R-{ri}; 集合X中元素的全排列记为Permutation(X), ...

随机推荐

  1. 『TensorFlow』专题汇总

    TensorFlow:官方文档 TensorFlow:项目地址 本篇列出文章对于全零新手不太合适,可以尝试TensorFlow入门系列博客,搭配其他资料进行学习. Keras使用tf.Session训 ...

  2. 【数据结构】运输计划 NOIP2015提高组D2T3

    [数据结构]运输计划 NOIP2015提高组D2T3 >>>>题目 [题目描述] 公元 2044 年,人类进入了宇宙纪元.L 国有 n 个星球,还有 n−1 条双向航道,每条航 ...

  3. Envoy 源码分析--network L4 filter manager

    目录 Envoy 源码分析--network L4 filter manager FilterManagerImpl addWriteFilter addReadFilter addFilter in ...

  4. 虚拟机centos7 基础模板制作

    用于新模板制作,主要针对一些基本组件的安装 分区.安装不在此赘述 最小化安装centos7-minimal-1810 1.安装wget yum install wget -y 2.更换aliyun源 ...

  5. java中之内存溢出说明

    java语句是编译型和解释型语言,选通过编译命令javac 把java文件编译为.class字节码文件,然后通过java虚拟机(JVM)加载class文件到内存运行. 而java虚拟机在运行程序时有自 ...

  6. 在Mac上安装office2016(破解版)

    doffice2016下载地址: 链接:https://pan.baidu.com/s/1V6I_QQiK2VK1rf0v4aVk5g  密码:3ijf 执行破解程序: 链接:https://pan. ...

  7. 路由导航之第一个子模块(HomeModule)

    git clone git@github.com:len007/my-angular2-app.git my-angular2-app 开始 一个URL = 一个页面 = 一个Component. 我 ...

  8. dockerfile编辑时常用的sed命令,用来修改配置文件。

    sed 替换部分文件内容 随着使用,会逐步更新. #替换整行sed '/mengqingbo/c lanqiuxiaozi="FALSE"' fileName #匹配行前加sed ...

  9. python之路-数据运算

    位运算: 运算符 描述                                                                   实例 +  加-两个对象相加         ...

  10. Java并发编程阅读笔记-同步容器、工具类整理