排序算法
来源:互联网 发布:自己设计头像软件 编辑:程序博客网 时间:2024/06/07 11:48
vector<string> vec1, vec2;void selectSort(int l, int r){for (int i = l;i <= r;i++){auto min = vec1[i];int index = i;for (int s = i;s <= r;s++){if (cmp(vec1[s], min)){min = vec1[s];index = s;}}swap(vec1[i], vec1[index]);}}void insertSort(int l, int r){for (int i = l + 1;i <= r;i++){auto v = vec1[i];int index = i - 1;for (;index >= l;index--){if (cmp(vec1[index], v))break;}index++;for (int j = i;j > index;j--){swap(vec1[j], vec1[j - 1]);}vec1[index] = v;}}void qsort(int l, int r){if (r <= l)return;int rnum = rand() % (r - l + 1) + l;int lpos = l, rpos = r;auto m = vec1[rnum];swap(vec1[l], vec1[rnum]);lpos++;while (true){while (lpos < rpos && cmp(m, vec1[rpos]))rpos--;while (lpos < rpos && !cmp(m, vec1[lpos]))lpos++;if (lpos == rpos)break;swap(vec1[lpos], vec1[rpos]);}if (cmp(vec1[lpos], vec1[l]))swap(vec1[lpos], vec1[l]);if (lpos - 1 - l > 8)qsort(l, lpos - 1);elseinsertSort(l, lpos - 1);if (r - lpos > 8)qsort(lpos, r);elseinsertSort(lpos, r);}void randString(vector<string> &vec){int len = rand() % 20 + 1;string n;for (int i = 0;i < len;i++){n.append(1, rand() % ('z' - 'a' + 1) + 'a');}n.append(1,0);vec.push_back(n);}int main(){srand(time(0));int c = 500000;for (int i = 0;i < c;i++){randString(vec1);vec2.push_back(*vec1.rbegin());}cout << "start:" << c << " strings" << endl;auto t1=chrono::system_clock::now();qsort(0, vec1.size() - 1);auto t2 = chrono::system_clock::now();cout <<"my algrithm use time:" << (t2 - t1).count() / (double)chrono::system_clock::period::den << endl;t1 = chrono::system_clock::now();sort(vec2.begin(), vec2.end(), [](string&l,string&r){const char *t1 = l.c_str();const char *t2 = r.c_str();while (*t1 && *t2 && *t1 == *t2){t1++, t2++;}return *t1 < *t2;});t2 = chrono::system_clock::now();cout <<"c++ sort use time:" << (t2 - t1).count() / (double)chrono::system_clock::period::den << endl;for (int i = 0;i < vec1.size();i++){if (vec1[i] != vec2[i]){cout << "error" << endl;break;}}getchar();return 0;}
阅读全文
0 0
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 基于 Blink SQL 的阿里实时计算平台StreamCompute介绍
- tf.where(a,b,c)函数
- 关于这个公众号的过去和未来
- Android多渠道SDK开发心得(5)——多渠道sdk的调试
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 排序算法
- 使用ajax请求提交数据时,日期类型无法转换为JAVA中的日期类型
- SQL SERVER 2008 编程入门经典读书笔记 -- SQL Server 复杂查询
- 让数据起飞,MySql索引
- Android多渠道SDK开发心得(6)——sdk日志注入构建时间戳
- kafka集群监控KafkaOffsetMonitor
- Android多渠道SDK开发心得(7)——自动生成demo
- Microsoft Visual Studio 2013
- 初始化,清空,逆置数组