经典排序算法 – 奇偶排序Odd

来源:互联网 发布:微屏软件科技 陈路 编辑:程序博客网 时间:2024/05/21 09:39

基本思路是奇数列排一趟序,偶数列排一趟序,再奇数排,再偶数排,直到全部有序

待排数组[6 2 4 1 5 9]

第一次比较奇数列,奇数列与它的邻居偶数列比较,如6和2比,4和1比,5和9比

[6 2 4 1 5 9]

交换后变成

[2 6 1 4 5 9]

第二次比较偶数列,即6和1比,4和5比

[2 6 1 4 5 9]

交换后变成

[2 1 6 4 5 9]

第三趟又是奇数列,选择的是2、6、5分别与它们的邻居列比较

[2 1 6 4 5 9]

交换后

[1 2 4 6 5 9]

第四趟偶数列

[1 2 4 6 5 9]

一次交换

[1 2 4 5 6 9]

 1 //Odd-even sort 2   3 #include <stdio.h> 4 #include <stdlib.h> 5   6 int main(int argc,char *argv[]) 7 { 8     int array[6]={6,2,4,1,5,9}; 9     int flag=1,temp,sign;10  11     //Odd-even sort12     while(flag!=0)13     {14         flag=0;15  16         //奇数列排序17         for(sign=0;sign<6;sign+=2)18         {19             if(array[sign]>array[sign+1])20             {21                 temp=array[sign];22                 array[sign]=array[sign+1];23                 array[sign+1]=temp;24                 flag=1;25             }26         } 27  28         //偶数列排序29         for(sign=1;sign<6;sign+=2)30         {31             if(array[sign]>array[sign+1])32             {33                 temp=array[sign];34                 array[sign]=array[sign+1];35                 array[sign+1]=temp;36                 flag=1;37             }38         } 39         //这两个for循环应该可以合成一个的,但是不知道怎么做 40     }41  42     //输出排序后的数组43     for(sign=0;sign<6;sign++)44     {45         printf("%d",array[sign]);46     } 47  48     return 0;49 }

引用:http://www.cnblogs.com/kkun/archive/2011/11/23/2260295.html


<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击