Code(一)排序算
来源:互联网 发布:mac迅雷下到46没速度 编辑:程序博客网 时间:2024/06/05 06:10
更正1:
快速排序算法,切分函数勘误,错误源自《算法 第4版》,当待排序列无重复元素时,该错误不会显现,但是当出现重复元素时,有可能会出现死循环。
向下不满足数据和向上不满足数据,在交换位置后,应该对索引进行更新;否则由于重复元素的存在,交换的数据和枢轴数据相同,交换后,两边数据依旧不满足,索引不会更新,将会陷入死循环。
更正2:
insert_sort,可以提前break
#include<iostream>using namespace std;void swap(int &a, int &b){int temp;temp = a;a = b;b = temp;}void sort_select(int *vec, int len) //选择排序 {if (len <= 1) return;for (int i = 0; i < len - 1; i++){int min = i;for (int j = i + 1; j < len; j++){if (vec[j] < vec[min]){min = j;}}swap(vec[i], vec[min]);}}void sort_insert(int *vec, int len) //插入排序{if (len <= 1) return;for (int i = 1; i < len; i++){for (int j = i; j>0; j--){if (vec[j] < vec[j - 1]) swap(vec[j], vec[j - 1]);else break; //添加上,可以提高效率}}}int partition(int *vec, int lo, int hi){int value = vec[lo];int i = lo + 1;int j = hi;while (true){while ((vec[i] < value) && (i < hi)) { i++; }while ((vec[j]>value) && (j>lo)) { j--; }if (i >= j) { break; }swap(vec[i], vec[j]);i++; // 更新操作j--; // 更新操作}swap(vec[lo], vec[j]);return j;}void sort_quick(int *vec, int lo, int hi) //快速排序{if (hi <= lo) return;int j = partition(vec, lo, hi);sort_quick(vec, lo, j - 1);sort_quick(vec, j + 1, hi);}int main(){int a[9] = { 2, 4, 5, 2, 8, 19, 4, 11, 43 };for (int i = 0; i < 9; i++){cout << a[i] << ' ';}cout << endl;//sort_select(a,9);//sort_insert(a,9);sort_quick(a, 0, 8);for (int i = 0; i < 9; i++){cout << a[i] << ' ';}system("pause");return 0;}
阅读全文
0 0
- Code(一)排序算
- 基本排序算法 code
- Code[VS] 1076 排序
- 快速排序(code)
- 归并排序(code)
- SQL code(一)
- code review (一)
- Code Review(一)
- Code Review(一)
- Clean Code 读书笔记一
- Code Review 总结一
- Clean Code读后感一
- clean code读书笔记一
- 一.排序
- 排序(一)
- 排序一--基础排序
- 排序(一)-插入排序
- 排序一 简单排序
- SSM:spring+springmvc+mybatis框架中的XML配置文件功能详细解释
- soapUI脚本发送xml
- RabbitMQ之路由 topic方式
- vs2008编译zlib库32位及64位
- C#奇妙的函数(1)-五个序列聚合运算(Sum, Average, Min, Max,Aggregate)
- Code(一)排序算
- 【LeetCode】Longest Consecutive Sequence
- 存储过程的监控表DBA_proc_log
- iOS部分页面横竖屏解决方案
- Jquery给动态添加的元素绑定事件:live() delegate() on()
- 百倍增长,数据驱动——【云栖实录】面对正在崛起的移动支付,如何做好数据运营
- 网络请求缓存和判断网络
- apache配置文件,httpd.conf详解
- 可视化图表工具的选择