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

这段时间真是恶心,老师没事搞一个查课机制,限制了老夫的自由。哎,说多了都是泪,不能好好的撸算法了。。。。
在去签到的前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;

}

    原文作者:编码的哲哲
    原文地址: https://www.jianshu.com/p/182bd926d558
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞