数据结构排序法之鸡尾酒排序法he快速排序法
来源:互联网 发布:网络乞丐mc吴迪伴奏 编辑:程序博客网 时间:2024/05/21 07:37
鸡尾酒排序,也叫定向冒泡排序,是冒泡排序的一种改进。此算法与冒泡排序的不同处在于从低到高然后从高到低,而冒泡排序则仅从低到高去比较序列里的每个元素。他可以得到比冒泡排序稍微好一点的效能。
// 两两互换void swap (int* a, int i, int j){ int tmp; tmp = a[i]; a[i] = a[j]; a[j] = tmp;}// 鸡尾酒法void tail1 (int* a, int len){ // 初始化边界 int left = 0; int right = len - 1; int i; while (left < right) { // 前半轮将最大元素放到最后面 for (i = left; i < right; i++) { if (a[i] > a[i+1]) { swap (a, i, i+1); } } right--; // 右边界左移一位 // 后半轮将最小元素放到最前面 for (i = right; i > left; i--) { if (a[i-1] > a[i]) { swap (a, i, i-1); } } left++; // 左边界右移一位 } }
快速排序(Quicksort)是对冒泡排序的一种改进。
它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
// 两两互换void swap (int* a, int i, int j){ int tmp; tmp = a[i]; a[i] = a[j]; a[j] = tmp;}// 分区操作,返回基准值的下标int partition(int *a, int left, int right){ int pivot = a[right]; int index = left; // 如果找到一个比基准值小的元素,与下标为index的元素交换 int i; for (i = left; i < right; i++) { if (a[i] < pivot) { swap (a, i, index); index++; } } swap (a, index, right); return index; // 基准值所在位置下标}void qSort(int *a, int left, int right){ if (left < right) { int pivot = partition(a, left, right); // 进行分区操作,找基准值下标 qSort (a, left, pivot-1); // 对左边部分进行快速排序 qSort (a, pivot+1, right); // 对右边部分进行快速排序 }}
阅读全文
1 0
- 数据结构排序法之鸡尾酒排序法he快速排序法
- 数据结构排序法之堆排序he归并排序
- 冒泡排序优化之鸡尾酒排序法
- 鸡尾酒排序法
- 数据结构-排序: 交换排序(快速排序法)
- 数据结构-排序: 交换排序(快速排序法)
- 数据结构快速排序法
- 排序算法之鸡尾酒排序
- 排序算法之鸡尾酒排序
- 排序算法之鸡尾酒排序
- 排序算法之鸡尾酒排序
- 数据结构学习之_快速排序法
- 鸡尾酒排序法(双向冒泡)
- 数据结构各种排序法及核心思想(冒泡、鸡尾酒、选择、插入、二分法、希尔、堆、归并、快速)
- 排序--快速排序法
- 【排序】快速排序法
- 快速排序法排序
- 鸡尾酒排序
- Linux学习(八):文件名的查找Find
- hdu--6063 RXD and math
- 详解如何在jsp页面中获取值栈中的数据
- pyhton微博爬虫(2)——获取微博用户关注列表
- 如何产生不重复的随机数
- 数据结构排序法之鸡尾酒排序法he快速排序法
- 顺序表应用5:有序顺序表归并
- Codeforces 688E The Values You Can Make(DP)
- RH134-第十六节-磁盘管理
- 服务器端之jsp内置对象和作用域
- Linux 防火墙知识 Filter配置信息 及简单配置demo
- [转]MQTT协议分析学习
- 多线程基础
- LeetCode 3Sum C++