就使用快排或者堆排序,否则就使用冒泡排序; 现已将代码上传至github:https://github.com/KimAlittleStar/cstd 目录 1.引言 2.1 C语言_实现简单基础的vector 2.2 C语言_实现数据容器vector(排序功能) 3.1 C语言_实现AVL平衡二叉树 3.2 C语言_实现数据容器set(基础版) 4 C语言_实现简单基础的map...
冒泡排序是O(N^2)复杂度的排序算法,效率较低,需要N趟遍历,每次将候选集中最小的数通过交换浮到最上面; template <typename Type>voidBubbleSort(vector<Type> &arraySort,intlowIndex,inthightIndex) {boolbChange;for(inti=lowIndex; i<hightIndex; ++i) { bChange=false;for(intj=hightIndex; j>i; --...
voidCountSort(vector&vecRaw,vector&vecObj) { //确保待排序容器非空 if(vecRaw.size()==0) return; //使用vecRaw的最大值+1作为计数容器countVec的大小 intvecCountLength=(*max_element(begin(vecRaw),end(vecRaw)))+1; vectorvecCount(vecCountLength,0); //统计每个键值出现的次数 for(inti=0;i<...
#include <iostream> #include <vector> usingnamespacestd; voidswap(int&a,int&b) { inttemp=0; temp=a; a=b; b=temp; } //冒泡排序算法 voidbubble_sort(int*a,intn) { for(intj=1;j<=n-1;++j)//长度为n的数组需要遍历n-1次 { for(inti=0;i<n-j;++i)//每次比较次数为n-j,例如...
cout << "排序之后:\n";for (int i = 0; i < count; ++i)cout << all[i].name << "的平均成绩为:" << all[i].averageScore << "分\n";cout << "\n\n\n";/ //用数据结构 vector<Student> allStudents;allStudents.push_back(one);allStudents.push_back(two);all...
4 快速排序算法思想:选取第一个数为基准 将比基准小的数交换到前面,比基准大的数交换到后面 对左右区间重复第二步,直到各区间只有一个数image代码:void QuickSort(vector<int>& v, int low, int high) { if (low >= high)// 结束标志 return; int first = low;// 低位下标 int last = high;// ...
vector<int>::iterator p = v.begin(); } 我的答案是,迭代器问题,只能删除第一个,以后迭代器就失效了,不能删除之后的元素。 但我不知道怎么改 void print(const vector<int>&); int main() { vector<int> array; array.push_back(1); array.push_back(6); array.push_back(6); array.push_bac...
序列式容器,其中的元素不一定有序,但都可以被排序。如:vector、list、deque、stack、queue、heap、priority_queue、slist; 关联式容器,内部结构基本上是一颗平衡二叉树。所谓关联,指每个元素都有一个键值和一个实值,元素按照一定的规则存放。如:RB-tree、set、map、multiset、multimap、hashtable、hash_set、hash_ma...
vector:它是一个动态分配存储空间的容器。区别于c++中的array,array分配的空间是静态的,分配之后不能被改变,而vector会自动重分配(扩展)空间。 set:其内部元素会根据元素的键值自动被排序。区别于map,它的键值就是实值,而map可以同时拥有不同的键值和实值。
并支持通过下标快速访问和修改元素。虽然数组大小在定义时确定且不可改变,但我们可以通过指针和内存分配函数实现动态数组的效果。在使用数组时,我们应注意数组越界错误和有效下标范围,并可根据需要选择适当的排序、查找等算法来应用数组。我们也需要了解数组的高级应用,如动态数组和STL中的vector容器等。