1.算法原理

2.代码实现

#include <stdio.h>//printArray打印出数组
void printArray(int a[],int size){  printf("数组为:[%d] ",a[0]);  for (int i=1;i<size;i++)  {  printf(" %d ",a[i]);  }  printf("\n");
}void main()
{//a[0]监视哨int  a[10] ={0,9,8,7,6,5,4,3,2,1};  int  len=10;bool swapped = true;  while (swapped)  {  swapped = false;  for (int i=1; i<len-1; i=i+2)  {  if (a[i]>a[i+1])  {  printf("%d<-->%d ",a[i],a[i+1]);printArray(a,len);a[0]=a[i];a[i]=a[i+1];a[i+1]=a[0];swapped = true;  }  }  for (int j=2; j<len-1; j=j+2)  {  if (a[j]>a[j+1])  { printf("%d<-->%d ",a[j],a[j+1]);printArray(a,len);a[0]=a[j];a[j]=a[j+1];a[j+1]=a[0];swapped = true;  }  }  }  printArray(a,len);
}

3.结果

9<-->8 数组为:[0]  9  8  7  6  5  4  3  2  1
7<-->6 数组为:[9]  8  9  7  6  5  4  3  2  1
5<-->4 数组为:[7]  8  9  6  7  5  4  3  2  1
3<-->2 数组为:[5]  8  9  6  7  4  5  3  2  1
9<-->6 数组为:[3]  8  9  6  7  4  5  2  3  1
7<-->4 数组为:[9]  8  6  9  7  4  5  2  3  1
5<-->2 数组为:[7]  8  6  9  4  7  5  2  3  1
3<-->1 数组为:[5]  8  6  9  4  7  2  5  3  1
8<-->6 数组为:[3]  8  6  9  4  7  2  5  1  3
9<-->4 数组为:[8]  6  8  9  4  7  2  5  1  3
7<-->2 数组为:[9]  6  8  4  9  7  2  5  1  3
5<-->1 数组为:[7]  6  8  4  9  2  7  5  1  3
8<-->4 数组为:[5]  6  8  4  9  2  7  1  5  3
9<-->2 数组为:[8]  6  4  8  9  2  7  1  5  3
7<-->1 数组为:[9]  6  4  8  2  9  7  1  5  3
5<-->3 数组为:[7]  6  4  8  2  9  1  7  5  3
6<-->4 数组为:[5]  6  4  8  2  9  1  7  3  5
8<-->2 数组为:[6]  4  6  8  2  9  1  7  3  5
9<-->1 数组为:[8]  4  6  2  8  9  1  7  3  5
7<-->3 数组为:[9]  4  6  2  8  1  9  7  3  5
6<-->2 数组为:[7]  4  6  2  8  1  9  3  7  5
8<-->1 数组为:[6]  4  2  6  8  1  9  3  7  5
9<-->3 数组为:[8]  4  2  6  1  8  9  3  7  5
7<-->5 数组为:[9]  4  2  6  1  8  3  9  7  5
4<-->2 数组为:[7]  4  2  6  1  8  3  9  5  7
6<-->1 数组为:[4]  2  4  6  1  8  3  9  5  7
8<-->3 数组为:[6]  2  4  1  6  8  3  9  5  7
9<-->5 数组为:[8]  2  4  1  6  3  8  9  5  7
4<-->1 数组为:[9]  2  4  1  6  3  8  5  9  7
6<-->3 数组为:[4]  2  1  4  6  3  8  5  9  7
8<-->5 数组为:[6]  2  1  4  3  6  8  5  9  7
9<-->7 数组为:[8]  2  1  4  3  6  5  8  9  7
2<-->1 数组为:[9]  2  1  4  3  6  5  8  7  9
4<-->3 数组为:[2]  1  2  4  3  6  5  8  7  9
6<-->5 数组为:[4]  1  2  3  4  6  5  8  7  9
8<-->7 数组为:[6]  1  2  3  4  5  6  8  7  9
数组为:[8]  1  2  3  4  5  6  7  8  9

转载于:https://www.cnblogs.com/whzhaochao/p/5023467.html

奇偶排序(OddEven Sort)----(排序算法十一)相关推荐

  1. golang的int64排序_golang sort —— 排序算法

    该包实现了四种基本排序算法:插入排序.归并排序.堆排序和快速排序. 但是这四种排序方法是不公开的,它们只被用于sort包内部使用.所以在对数据集合排序时不必考虑应当选择哪一种排序方法,只要实现了sor ...

  2. c语言sort函数从小到大排序指针,sort排序是从小到大

    java数组排序问题:array.sort()是从小到大排序,别告诉我从i=a.length开始打印然后i.因为数组没变啊,只是打印顺序变Integer [] array=new Integer[]{ ...

  3. linux sort命令 排序,Linux sort排序方法

    在文件的操作过程中,因为文件过多,往往需要进行一下排序,排序方法也就是从小到大排序或者从大到小排序.比如我们从nginx日志中需要找到访问量最长的url,那就需要对请求时间进行一个排序,根据请求时间长 ...

  4. 鸡尾酒排序Cocktail Sort(排序算法九)

    1.算法原理 2.代码实现 #include <stdio.h>//printArray打印出数组 void printArray(int a[],int size){ printf(&q ...

  5. 【c/c++编程-排序问题】成绩排序、整数奇偶排序、国名排序、日志排序、字符串排序

    目录 成绩排序 整数奇偶排序1.0 成绩排序2.0 国名排序 日志排序 整数奇偶排序2.0 字符串排序 解一 解二 字符串排序3 后缀子串排序 EXCEL排序 特殊排序 成绩排序3.0 大整数排序 成 ...

  6. python列表反向排序_Python 列表排序方法reverse、sort、sorted详解

    python语言中的列表排序方法有三个:reverse反转/倒序排序.sort正序排序.sorted可以获取排序后的列表.在更高级列表排序中,后两中方法还可以加入条件参数进行排序. reverse() ...

  7. 经典排序算法 - 鸽巢排序Pigeonhole sort

    经典排序算法 - 鸽巢排序Pigeonhole sort 原理类似桶排序,同样需要一个很大的鸽巢[桶排序里管这个叫桶,名字无所谓了] 鸽巢其实就是数组啦,数组的索引位置就表示值,该索引位置的值表示出现 ...

  8. C++Bitonic Sort双调排序/比并排序的实现算法(附完整源码)

    C++Bitonic Sort双调排序/比并排序的实现算法 C++Bitonic Sort双调排序/比并排序的实现算法完整源码(定义,实现,main函数测试) C++Bitonic Sort双调排序/ ...

  9. C++使用Merge Sort排序计数反转的实现算法(附完整源码)

    C++使用Merge Sort排序计数反转的实现算法 C++使用Merge Sort排序计数反转的实现算法完整源码(定义,实现,main函数测试) C++使用Merge Sort排序计数反转的实现算法 ...

最新文章

  1. Activiti概述
  2. Qt 关于定时器实用的总结
  3. codevs1079 回家
  4. Lotus,协作领域的常青树
  5. python图像标记工具怎么用_一眼看穿的最佳图像标记工具!
  6. STM32-SysTick定时器
  7. 拳王虚拟项目公社:虚拟资源知识付费怎么玩?如何做知识付费?知识付费如何赚钱?
  8. (原创)shell脚本编程之---正则表达式的使用
  9. 职业发展加速器,埃森哲智能云服务创新中心热招云人才
  10. 爬虫学习2----Pyquery
  11. Linux-rhel6.4 编译安装PHP,Nginx与php连接
  12. 计算机的组成 —— 显示器
  13. 实现putchar put_str put_int
  14. Windows如何查看局域网内所有设备的ip
  15. 《分布式资本链周刊》第二期
  16. learning bamboo flute
  17. Linux man --显示在线手册页
  18. Halcon学习-算子学习-映射/傅里叶变换/gen_grid_region/rft_generic例程
  19. 「哮喘」,更精细和全面的认识
  20. C++不知算法系列之高精度数值处理算法

热门文章

  1. ODBC连接oracle 10g 客户端
  2. (分治)分治法 及 题目
  3. 新车入手,美利达公爵500
  4. 夯实基础开新局--全国乡镇党委换届工作进展顺利
  5. 一步一步学VBScript(4)之WSH对象三
  6. 创建基于存储过程的数据块
  7. python进程数上限_在多处理python中限制进程数
  8. [Python] L1-015. 跟奥巴马一起画方块-PAT团体程序设计天梯赛GPLT
  9. oracle计算两个日期的时间差时分秒
  10. perl 判断不包含某字符串