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

但这算是第一次自己用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. Python面向对象编程 -- 类和实例、访问限制

    面向对象编程 Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机程 ...

  2. ROM、RAM、CPU、CACHE、FLASH

    内存在电脑中起着举足轻重的作用.内存一般采用半导体存储单元,包括随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE).只不过因为RAM是其中最重要的存储器,所以通常所说的内存即指电脑 ...

  3. IIS部署发布flask网站

    先参考http://python.jobbole.com/87655/,会发现失败. 再参考https://blog.csdn.net/david_lee13/article/details/8198 ...

  4. sface

    单步检测方法分为两类:anchor-based如ssd.RetinaNet;2)Anchor-free 如DenseBox.UnitBox;anchor-based处理的尺度范围虽小,更精准:anch ...

  5. Java多线程之synchronized及其优化

    Synchronized和同步阻塞synchronized是jvm提供的同步和锁机制,与之对应的是jdk层面的J.U.C提供的基于AbstractQueuedSynchronizer的并发组件.syn ...

  6. Android 音视频深入 十八 FFmpeg播放视频,有声音(附源码下载)

    项目地址https://github.com/979451341/AudioVideoStudyCodeTwo/tree/master/FFmpegv%E6%92%AD%E6%94%BE%E8%A7% ...

  7. open() 文件读写简要记录

  8. [jQuery]判断checkbox是否选中的3种方法

    方法一: if ($("#checkbox-id")get(0).checked) { // do something } 方法二: if($('#checkbox-id').is ...

  9. VMware虚拟机开机自启动

    VMware虚拟机开机自启动 linux 2018年05月09日 08时30分18秒 VMware的命令行语句可以切换到VMware安装目录,使用vmrun.exe --help(windows下)查 ...

  10. VsCode编写博客发布

    发布图片测试: Java代码测试: //计算机等级考试p6例1.2 //编辑者:鸿灬嗳 package test00; class Circle{ static double PI=3.1415926 ...