码迷,mamicode.com
首页 > 编程语言 > 详细

修改后的双向选择排序函数

时间:2015-12-02 11:56:53      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:

技术分享
 1 void BiSelectSort( int a[ ], int n )    /* 双向选择排序函数 */
 2 {   int i, j, k, kmax, kmin, t;
 3     for( i=0, j=n-1; i<j; ++i, --j  )
 4     {   kmin=kmax=i;
 5         for( k=i+1; k<=j; ++k )        //一趟扫描找出最大值和最小值
 6         {   if( a[k]<a[kmin] )  kmin=k;
 7             if( a[k]>a[kmax] )  kmax=k;
 8         }
 9         //区分四种情况,分别进行处理,通常没有被人意识到而导致错误
10         if( kmin==j && kmax==i )    //1.
11         {    t=a[i];
12             a[i]=a[j];
13             a[j]=t;
14         }
15 //        else if( kmin==j && kmax!=i )    //2.省略这种情况,可在第四种情况下处理
16 //        {    t=a[i];
17 //            a[i]=a[kmin];
18 //            a[kmin]=a[i];
19 //            t=a[j];
20 //            a[j]=a[kmax];
21 //            a[kmax]=t;
22 //        }
23         else if( kmax==i && kmin!=j )    //3.
24         {    t=a[j];
25             a[j]=a[kmax];
26             a[kmax]=t;
27             t=a[i];
28             a[i]=a[kmin];
29             a[kmin]=t;
30         }
31         else                            //4.
32         {    if( kmin!=i )
33             {   t=a[i];
34                 a[i]=a[kmin];
35                 a[kmin]=t;
36             }
37             if( kmax!=j )
38             {   t=a[j];
39                 a[j]=a[kmax];
40                 a[kmax]=t;
41             }
42         }
43     }
44 }
View Code

 

修改后的双向选择排序函数

标签:

原文地址:http://www.cnblogs.com/jiutoushi/p/5012222.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!