shaker 排序法
来源:互联网 发布:淘宝详情页制作技巧 编辑:程序博客网 时间:2024/06/15 16:13
#include<stdio.h>#include<stdlib.h>/*shaker 排序法-改良的冒泡排序采用双向进行:先让气泡排序由左向右进行,再来让气泡排序由右往左进行 ,如此完成一次排序的动作,而您必须使用left与right两个旗标来记录左右两端已排序的元素位置。如:一个排序的例子如下所示:排序前:45 19 77 81 13 28 18 19 77 11往右排序:19 45 77 13 28 18 19 77 11 [81]向左排序:[11] 19 45 77 13 28 18 19 77 [81]往右排序:[11] 19 45 13 28 18 19 [77 77 81]向左排序: [11 13] 19 45 18 28 19 [77 77 81]往右排序: [11 13] 19 18 28 19 [45 77 77 81]向左排序: [11 13 18] 19 19 28 [45 77 77 81]往右排序: [11 13 18] 19 19 [28 45 77 77 81]向左排序: [11 13 18 19 19] [28 45 77 77 81]如上所示,括号中表示左右两边已排序完成的部份,当left > right时,则排序完成。*/void swap(int &a, int &b){ int temp; temp = a; a = b; b = temp;}void Shake_bubsort(int *num, int N){ int i, j; int count = 1; int left = 0; int right = N - 1; for (i = 0; i < N ; i++) { for (j = left; j <= right-1; j++) { if (num[j] > num[j + 1]) { swap(num[j], num[j + 1]); } } for (j = right; j >= left + 1; j--) { if (num[j] < num[j - 1]) swap(num[j], num[j - 1]); } right--; left++; if (right < left) break; printf("%d次:", count++); for (int k = 0; k < N; k++) { printf("%d ", num[k]); } printf("\n"); }} int main(){ int num[10] = { 45, 19, 77, 81, 13, 28, 18, 19, 77, 11 }; Shake_bubsort(num, 10); system("pause"); return 0;}
阅读全文
0 0
- shaker 排序法
- Shaker 排序法 - 改良的气泡排序
- (13)shaker 排序
- 算法 Shaker排序法 - 改良的气泡排序
- 排序算法-shaker-改良的冒泡排序算法
- 详解冒泡排序和对其优化的Shaker 排序
- 《数据结构原理与经典问题求解》——Shaker排序
- [6] 算法之路 - 双向冒泡排序之Shaker
- openstack shaker-image的build
- OpenStack网络测试工具shaker介绍
- TC Disrupt San Francisco 2011冠军出炉,Shaker问鼎
- Internal Sorting: Cocktail-shaker sort: Sorting by Exchanging
- 排序--快速排序法
- 【排序】快速排序法
- 【排序】冒泡排序法
- 【排序】插入排序法
- 【排序】归并排序法
- 【排序】堆排序法
- 【OpenCV入门教程之四】 ROI区域图像叠加&初级图像混合 全剖析
- Pandas秘籍【第九章】
- Python练习_1 水仙花数_3
- 谈Ajax技术
- C++学习52个经典网站
- shaker 排序法
- Windows7 U盘安装Ubuntu14.04双系统教程
- 人工智能从入门到精通(6)
- 简易麻将平胡算法
- 用数组给selec元素插入选项
- display:inline-block,block,inline的区别与用法
- 《Effective Java》------对所以对象都通用的方法
- vmware14版本虚拟机黑屏问题解决方案
- Shiro @RequiresRoles注解不生效解决方案及相应设置