10大排序算法之【直接插入排序】

作者: 编码的哲哲 | 来源:发表于2016-10-18 09:36 被阅读279次

    这段时间真是恶心,老师没事搞一个查课机制,限制了老夫的自由。哎,说多了都是泪,不能好好的撸算法了。。。。
    在去签到的前20分钟简单描述一下直接插入排序的思想:
    从第2个数开始,依次向前比较寻找自己合适的位置,找到后赋值即可。具体做法是现将要比较的数抽出来赋值给一个变量,这样在确定自己的下一个不是插入位置时直接执行list[i-1]=list[i]。找到插入位置时再把抽出来的变量赋值过去就好。总之在算法实现上有一些小细节不好描述,直接贴代码吧:

    include <iostream>

    include <vector>

    using namespace std;

    class InsertSort{

    private:
        int len;
        vector<int> list;
    public:
        InsertSort(vector<int> _list, int _len);
        void insert_sort();
        void out();
    

    };

    InsertSort::InsertSort(vector<int> _list, int _len){

    for(int i=0; i<_len; i++) list.push_back(_list[i]);
    
    this->len = _len;
    

    }

    void InsertSort::insert_sort(){

    int insertNum;
    for(int i=1; i<len; i++){
        
        insertNum = list[i];
        int j = i;
        
        while(j>0 && list[j-1]>insertNum){
            list[j] = list[j-1];
            j--;
         }
         
         list[j] = insertNum;
     }
    

    }

    void InsertSort::out(){

    for(int i=0; i<len; i++){
        cout<<list[i];
     }
    

    }

    int main(){

    int array[9] = {9,8,7,6,5,4,3,2,1};//待排序的数 
    vector<int>list;
    for(int i=0; i<9; i++)list.push_back(array[i]);
    InsertSort mazhe(list,9);
    mazhe.insert_sort();
    mazhe.out();
    
    return 0;
    

    }

    相关文章

      网友评论

      本文标题:10大排序算法之【直接插入排序】

      本文链接:https://www.haomeiwen.com/subject/pfnzyttx.html