zoukankan      html  css  js  c++  java
  • 【5】用vector进行直接插入排序

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

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

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

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

    就在刚刚我debug出来了!

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

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

    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    vector<int>a(1000);
    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=1; cin >> num; for(int i=0;i<num;++i) cin >> a[i]; if(a[0]>a[1]) { int temp; temp=a[0]; a[0]=a[1]; a[1]=temp; } for(int i=2;i<num;++i){ sortt(0,cnt,a[i],i+1,num); cnt++; } for(int i=0;i<num;++i) cout << a[i] << " "; return 0; }
  • 相关阅读:
    python学习:字符编码与转码
    python学习:文件操作
    python学习:基本运算符
    python学习:列表、元组、字典、集合
    python学习:基础知识
    linux常用命令
    hadoop手动安全模式
    System.getProperty("user.dir")的理解
    如何获取SpringBoot项目的applicationContext对象
    spring无法注入bean
  • 原文地址:https://www.cnblogs.com/hl220284/p/10742787.html
Copyright © 2011-2022 走看看