神刀安全网

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;

}

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » 10大排序算法之【直接插入排序】

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址