第二章 插入排序 C++实现

来源:互联网 发布:常用的网络传输介质 编辑:程序博客网 时间:2024/06/05 07:39
<pre name="code" class="cpp">#include <iostream>#include <vector>#include <algorithm>struct myclass{bool operator()(int i,int j) {return (i > j);}}myobject;using namespace std;int main(void){vector<int> ivec;int num;int element;cin >> num;for(int i = 0;i < num;i++){cin >> element;ivec.push_back(element); //注意:::这两行必须有push_back来进行赋值  因为[]下标操作只能访问已经存在的元素进行下标操作。。。。}cout << "the original data is" <<  endl;for(int i = 0;i < num;i++){cout << ivec.at(i);cout << ((i + 1) % num ? ' ': '\n');}for(int i = 1;i < num;i++){int j = i - 1;int tmp = ivec[i];for(;j >=0;j--){if(tmp > ivec[j])ivec[j+1] = ivec[j];elsebreak;}ivec[j + 1] = tmp;}cout << "the sorted data is" <<  endl;for(int i = 0;i < num;i++){cout << ivec.at(i);cout << ((i + 1) % num ? ' ': '\n');}sort(ivec.begin(),ivec.end());   //默认为 <  cout << "the STL algorithm sorted data is" <<  endl;for(int i = 0;i < num;i++){cout << ivec.at(i);cout << ((i + 1) % num ? ' ': '\n');}sort(ivec.begin(),ivec.end(),myobject); //自己定义一个函数对象  改为 >cout << "the STL algorithm sorted > data is" <<  endl;for(int i = 0;i < num;i++){cout << ivec.at(i);cout << ((i + 1) % num ? ' ': '\n');}return 0;}





0 0