Day Four(vector容器+排序算法 )
vector代码实现:
#include<iostream> using namespace std; #include<vector> //vector和数组差不多动态存储 void printVector(vector<int> &v) { for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {//运用迭代器进行遍历 cout << *it <<" ";
} cout << endl;
} void test01() { vector <int> v;//默认构造。无参构造 for (int i = 0; i < 10; i++) { v.push_back(i);
} printVector(v); vector<int> v1(v.begin(), v.end());//通过区间的方式进行构造 printVector(v1); vector<int>v2(10, 100);//n个elm方式构造 printVector(v2); vector<int>v3(v2);//拷贝构造 printVector(v3);
} void test02() {//赋值操作 vector<int>v1; for (int i = 0; i < 10; i++) { v1.push_back(i); } printVector(v1); vector<int>v2; v2 = v1;//等号直接赋值 printVector(v2); vector<int>v3; v3.assign(v1.begin(), v1.end());//assign printVector(v3); vector<int>v4; v4.assign(10, 100); printVector(v4); } void test03() {//vector容量大小 vector<int>v1; for (int i = 0; i < 10; i++) { v1.push_back(i); } printVector(v1); if (v1.empty()) { //为真代表容器为真 cout << "容器为空" << endl; } else { cout << "容器不为空" << endl; cout << "容器的容量为:" << v1.capacity() << endl; cout << "容器的大小为:" << v1.size() << endl; } //重新定义大小 v1.resize(15); printVector(v1); v1.resize(16, 10);//0用10补 printVector(v1); v1.resize(5); printVector(v1); } void test04() {//vector的插入和删除 vector<int>v1; for (int i = 0; i < 10; i++) { v1.push_back(i); } printVector(v1); v1.push_back(10);//尾插法 printVector(v1); v1.pop_back();//尾删法 printVector(v1); v1.insert(v1.begin(), 100);//插入数据第一为迭代器 printVector(v1); v1.insert(v1.end(), 10, 100);//尾部加10个100 printVector(v1); v1.erase(v1.begin());//删除 printVector(v1); // v1.erase(v1.begin(), v1.end());//清空 v1.clear(); printVector(v1); } void test05() { vector<int>v; for (int i = 0; i < 10; i++) { v.push_back(i); } printVector(v); for (int i = 0; i < 10; i++) { cout << v.at(i) << " "; } cout << endl; //获取第一元素 cout << "第一个元素为:" << v.front() << endl; //获取最后一个元素 cout << "最后一个元素为:" << v.back() << endl; }
void test06() {//交换收缩内存 vector <int>v; for (int i = 0; i < 10; i++) { v.push_back(i); } cout << "交换前:" << endl; printVector(v);
vector<int> v1; for (int i = 11; i < 20; i++) { v1.push_back(i); } printVector(v1); cout << "交换后:" << endl; v.swap(v1); printVector(v); printVector(v1);
} void test07() {//预留空间 vector<int> v; v.reserve(1000); int num = 0; int* p = NULL; for (int i= 0; i < 1000; i++) { v.push_back(i); if (p != &v[0]) {//判断是否开辟过新的空间 p = &v[0]; num++; } } cout << "num=" << num << endl; } int main() { test01(); cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" << endl; test02(); cout << "=========================================================================================" << endl; test03(); cout << "_____________________________" << endl; test04(); cout << "------------------------------------------------------------------------------------------" << endl; test05(); cout << "~~~~~~~~~~~~~~~~~~~~~" << endl; test06(); cout << "·············································" << endl; test07(); return 0; }
实现插入排序
题目描述
实现插入排序算法。介绍如下:
插入排序的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从前向后扫描,找到相应位置并插入。
请编写代码,完成 插入排序,对给定数据进行升序排列。
输入描述
第一行,数字 N (2≤N≤100)N (2≤N≤100),表示待排序的元素个数。
第二行,待排序的元素。
输出描述
输出一行,为升序序列。
输入输出样例
示例
输入
6 7 1 4 8 5 2
输出
1 2 4 5 7 8
代码实现:
#include<bits/stdc++.h> using namespace std; int main(){ int n; int j; cin >>n;
int a[100]; int i; for(int q=0;q<n;q++){ cin>>a[q]; } for(i =1;i<n;i++) if(a[i]<a[i-1]){ int temp =a[i]; for(j= i-1;j>=0&&a[j]>temp;--j) a[j+1]=a[j]; a[j+1]=temp; } for(int p=0;p<n;p++){ cout<<a[p]<<" "; } return 0; }
实现快速排序
题目描述
实现快速排序算法。介绍如下:
快速排序的工作原理是通过一次排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序。
请编写代码,完成 排序,对给定数据进行升序排列。
输入描述
第一行,数字 N (2≤N≤100)N (2≤N≤100) ,表示待排序的元素个数。
第二行,待排序的元素。
输出描述
输出一行,为升序序列。
输入输出样例
示例
输入
6 7 1 4 8 5 2
输出
1 2 4 5 7 8
代码实现:
#include<bits/stdc++.h> using namespace std; int main(){ int n; int temp; cin>>n; int a[100]; for(int i =0;i<n;i++){ cin>>a[i]; } for(int i= 0;i<n-1;i++){ int min = i; for(int j =i+1;j<n;j++) if(a[j]<a[min]) min=j; if(min!=i){ swap(a[i],a[min]); } } for(int i =0;i<n;i++){ cout<<a[i]<<" "; } return 0; }