【5】用vector进行直接插入排序
百分百自己编的程序,越来越觉得编程很好玩了。
但这算是第一次自己用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进行直接插入排序的更多相关文章
- C++ 排序(未完)
参考: 快速排序 堆排序 各类排序 #include <iostream> #include <vector> #include <time.h> #include ...
- 模板化的七种排序算法,适用于T* vector<T>以及list<T>
最近在写一些数据结构以及算法相关的代码,比如常用排序算法以及具有启发能力的智能算法.为了能够让写下的代码下次还能够被复用,直接将代码编写成类模板成员函数的方式,之所以没有将这种方式改成更方便的函数模板 ...
- Java _ JDK _ Arrays, LinkedList, ArrayList, Vector 及Stack
(最近在看JDK源码,只是拿着它的继承图在看,但很多东西不记录仍然印象不深,所以开始记录JDK阅读系列.) (一)Arrays Arrays比较特殊,直接继承自Arrays ->List(Int ...
- 排序算法总结(一)插入排序【Insertion Sort】
最近在忙着找工作,以前看的排序算法都忘记了,悲剧啦T T现在来回顾一下吧. 这边推荐一个算法可视化的网站,非常有用.http://visualgo.net/ 一.插入排序的思想(Wikipedia) ...
- 数据结构复习:直接插入排序与二分插入排序的C++实现
1.直接插入排序 直接插入排序的过程可以理解为一个固定长度的数组被分为两个集合,即已排序集合和未排序. 开始时已排序集合为空,而未排序集合即为整个数组.当排序开始后插入一个对象,已排序集合元素数目加1 ...
- C++中的冒泡排序,选择排序,插入排序
最简单的插入排序:思想,两两之间比较,时间复杂度o(n^2) void bubblesort(vector<int>&vec, int n) { if (&vec==NUL ...
- 插入排序(C++)
插入排序(C++) 插入排序: 写这篇博文是为了增加对数据结构和算法的理解,同事增加编程的基本功. 当要对如下数据进行排序: 2,8,5,4,6,7,1 2,8,5,4,6,7,1 采用插入排序 ...
- 插入排序的优化非希尔【不靠谱地讲可以优化到O(nlogn)】 USACO 丑数
首先我们先介绍一下普通的插排,就是我们现在一般写的那种,效率是O(n^2)的. 普通的插排基于的思想就是找位置,然后插入进去,其他在它后面的元素全部后移,下面是普通插排的代码: #include< ...
- 数据结构基础(3) --Permutation & 插入排序
Permutation(排列组合) 排列问题: 设R = {r1, r2, ... , rn}是要进行排列的n个元素, Ri = R-{ri}; 集合X中元素的全排列记为Permutation(X), ...
随机推荐
- sql group by聚合函数
如何让分组后count计算结果为0的记录也显示
- CentOS 7 + MySql 中文乱码解决方案
原文:https://blog.csdn.net/qq_32953079/article/details/54629245,亲测有效,故记录之. 一.登录MySQL查看用SHOW VARIABLES ...
- nodemanager 无法启动报错“doesn't satisfy minimum allocations”
在启动nodemanager节点nodemanager时候报错 2019-03-29 14:15:44,648 INFO org.apache.hadoop.yarn.server.nodemanag ...
- IE10打印预览无反应
1. 建议您打开IE后,按Alt键,选择”工具“-”兼容性视图设置“,将网站添加到兼容性视图列表中,看情况如何.2.internet选项-高级-启用保护模式 勾去掉 看看行不行3.按下“Windows ...
- pytest pluggy.manager.PluginValidationError: unknown hook 'pytest_namespace'报错处理办法
一.背景说明 上周测试的同事说pytest+allure环境在别人电脑上跑没问题,在她的环境跑却报错让帮看一下.其实pytest只是听说过allure直接没听过,但不能直接表示不会,祭出百度大法. 看 ...
- 一位资深Java架构师的晋级心得
架构师是什么? 是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物.一个架构师得需要足够的想像力,能把各种目标需求进行不同维度的扩展,为目标客户提供更为全面的需求清 ...
- JAVA同步锁机制 wait() notify() notifyAll()
wait() notify() notifyAll() 这3个方法用于协调多个线程对共享数据的存取,所以必须在synchronized语句块中使用. wait() 必须在synchronized函数或 ...
- javascript--返回顶部效果
window.onload = function(){ var obtn = document.getElementById('btn'); //客户端页面可视区高度 var clientHeight ...
- ubuntu16.04 登陆不进桌面
ubuntu 16.04 登陆不进桌面 问题描述: 系统软件升级之后,重启,在登陆界面输入密码后,回车,闪现一次黑屏和一些代码,然后又重新回到登陆界面. 原因分析: 有两种可能: 1.主目录下的.Xa ...
- Linux常见命令快捷方式
命令行编辑的辅助操作: Tab健:自动补齐 Ctrl +U :清空至首行 Ctrl +K: 清空至尾行 Ctrl +L:(或者clear) 清屏 Ctrl +C: 取消执行命令 获取帮助命令: 内 ...