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