排序算法小结之我有感
1.random用法
#include<cstdlib>
#include<ctime>
srand((unsigned)time(0/Null));//种子函数 ,使每次的随机数产生结果不一样。若设置为一个常数,则每次产生的结果一样
int ret=rand()%(r-p+1)+r;//产生常数[p,r]/[p,r+1)之间的随机数
ps:限制只能支持整形数
2.stl里的算法 random_shuffle ;
#include<algorithm>
可以用于打乱已经排序的数组;
转换下使用的方式应该可以用来指示随机数的产生(...)
3.用最大堆排序,不需要额外空间;
4.插入排序从已经排好序的 i-1个元素从后往前与第i个元素比较,往后移动找到合适i元素的位置;
5.数组下标和现实对应问题是个非常头疼的事情,因为它已经花费太多时间!
6.寻找第i小元素:每5个分组的方式并不需要申请额外空间。注意实现过程,用下标标示表示分组即可。而且申请了额外二维数组(第二维长度为5)之后后面就不能做了。要使整个过程操纵的都是数组A本身。比线性时间内的桶排序和计数排序都节省空间,后2者都需要额外空间。
7.细枝末节的东西不难,但是最容易引发错误,从最开始都从最一般的情况去想比较好。不然以后慢慢改真心考验耐心。
#include<cstdlib>
#include<ctime>
srand((unsigned)time(0/Null));//种子函数 ,使每次的随机数产生结果不一样。若设置为一个常数,则每次产生的结果一样
int ret=rand()%(r-p+1)+r;//产生常数[p,r]/[p,r+1)之间的随机数
ps:限制只能支持整形数
2.stl里的算法 random_shuffle ;
#include<algorithm>
可以用于打乱已经排序的数组;
转换下使用的方式应该可以用来指示随机数的产生(...)
3.用最大堆排序,不需要额外空间;
4.插入排序从已经排好序的 i-1个元素从后往前与第i个元素比较,往后移动找到合适i元素的位置;
5.数组下标和现实对应问题是个非常头疼的事情,因为它已经花费太多时间!
6.寻找第i小元素:每5个分组的方式并不需要申请额外空间。注意实现过程,用下标标示表示分组即可。而且申请了额外二维数组(第二维长度为5)之后后面就不能做了。要使整个过程操纵的都是数组A本身。比线性时间内的桶排序和计数排序都节省空间,后2者都需要额外空间。
7.细枝末节的东西不难,但是最容易引发错误,从最开始都从最一般的情况去想比较好。不然以后慢慢改真心考验耐心。