如何查做的网站排名,沈阳网站提升排名,建设一个网站的目标与期望,建一个私人彩票网站基础算法之一#xff0c;相当重要。在普通的机试中如果没有数据类型和时空限制#xff0c;基本上选择自己最熟悉的就好。本篇只总结选择排序和插入排序#xff0c;侧重应用#xff0c;408中要求的种类更加繁多#xff0c;此处先不扩展难度~总结最常用的两种排序。 一.选择… 基础算法之一相当重要。在普通的机试中如果没有数据类型和时空限制基本上选择自己最熟悉的就好。本篇只总结选择排序和插入排序侧重应用408中要求的种类更加繁多此处先不扩展难度~总结最常用的两种排序。 一.选择排序 选择排序是最简单的排序之一此处介绍的是简单选择排序即每次从待排序的序列的序列中选择除最小的元素x令其与待排序不分的第一个元素y进行交换这样有序区间每次会扩大一位。完成n趟排序后所有元素就会是有序的。 如上图每次只需要找出最小的放在乱序的最前面也可以理解为正序的最后面即可函数如下依旧是vector版本不喜欢写伪码。。
void selectSort(vectorint V)
{for(int i0;iV.size()-1;i){int ki;for(int ji;jV.size()-1;j)if(V[j]V[k])kj; int tempV[i];V[i]V[k];V[k]temp; }for(int i0;iV.size()-1;i)coutV[i] ;
}
主函数进行测试 vectorint X;int n0,x0; cout请输入要排序的元素个数;cinn;for(int i1;in;i){cinx;X.push_back(x);}selectSort(X);
结果如下 二.插入排序 此处介绍的依旧是最简单的直接插入排序假设某个序列A其1到i-1位有序i到n位无序那么在1~i-1之间找到一个位置j将i插入到j后1~i有序。需要注意的是i插入到j后原来的j~i-1会后移一位至j~i1。 如上本质上就是将后面的无序元素依次插入到有序元素中~
函数如下
void insertSort(vectorint V)
{for(int i1;iV.size()-1;i) //第1位直接默认有序从第2位排序到最后一位~ {int tempV[i],ji; //临时保存第i位元素j则从i往前排序 while(j0tempV[j-1]) //只要temp小于前面的元素循环就一直往前推进 {V[j]V[j-1]; //元素后移 j--; } V[j]temp; //j位置上将原来的i位插入 }for(int i0;iV.size()-1;i)coutV[i] ;
}
测试如下 三.综合实践
如下将下列学生按照成绩从高到底排序
张三001,90分李四002,100分王五003,70分赵六004,60分老扁005,80分
算法题中经常有类似的题目首先要做的是定义结构体并赋值
struct student{int score;string name;string ID;
};
student s1{90,张三,001};
student s2{100,李四,002};
student s3{70,王五,003};
student s4{60,赵六,004};
student s5{80,老扁,005}; 然后乱序压入到同类型的vector中 vectorstudent s;s.push_back(s1);s.push_back(s2);s.push_back(s3);s.push_back(s4);s.push_back(s5); 接下来即可对student类型的vector进行排序我们这里采用选择排序直接改编上面的函数即可注意上面的形参是int型的vector——用来排序整数。而我们这里要对“student”进行排序因此要将参数类型改编至于用于比较的元素直接用v[i].score将属性点出来即可~
void selectSort(vectorstudent V) //更改类型
{for(int i0;iV.size()-1;i){int ki;for(int ji;jV.size()-1;j) if(V[j].scoreV[k].score) //直接用score属性比较;此外要求是升序因此大的优先 kj; student tempV[i]; //交换的临时变量要记得换类型~ V[i]V[k];V[k]temp; }for(int i0;iV.size()-1;i)coutV[i].name:V[i].scoreendl;
} 测试没什么问题