Dev@Free

zJun's Tech Weblog

[排序] 选择排序

选择排序的思想和插入排序差不多,都是先把排序的对象分作两组,不同点在于选择排序 将要排序的对象 分作一个是已排序的,一个是未排序的,从后端未排序部份选择一个最小值,并放入前端已排序部份的最后一个。

[例子]

排序前: 70 80 31 37 10 1 48 60 33 80
1.      [1] 80 31 37 10 70 48 60 33 80 选出最小值
1
2.      [1 10] 31 37 80 70 48 60 33 80 选出最小值
10
3.      [1 10 31] 37 80 70 48 60 33 80 选出最小值
31
4.     
[1 10 31 33] 80 70 48 60 37 80 ......
5.     
[1 10 31 33 37] 70 48 60 80 80 ......
6.     
[1 10 31 33 37 48] 70 60 80 80 ......
7.     
[1 10 31 33 37 48 60] 70 80 80 ......
8.     
[1 10 31 33 37 48 60 70] 80 80 ......
9.     
[1 10 31 33 37 48 60 70 80] 80 ......

[代码]

/**  
  * 选择排序
  *  
@param
  data:等待排序整型数组
  *  
  *  data = {70, 81, 31, 37, 10, 1, 48, 60, 33, 80}
  *  排序结果:  
  *        第 1 次排序:81 70 31 37 10 1 48 60 33 80 
  *        第 2 次排序:81 80 31 37 10 1 48 60 33 70 
  *        第 3 次排序:81 80 70 37 10 1 48 60 33 31 
  *        第 4 次排序:81 80 70 60 10 1 48 37 33 31 
  *        第 5 次排序:81 80 70 60 48 1 10 37 33 31 
  *        第 6 次排序:81 80 70 60 48 37 10 1 33 31 
  *        第 7 次排序:81 80 70 60 48 37 33 1 10 31 
  *        第 8 次排序:81 80 70 60 48 37 33 31 10 1 
  *        第 9 次排序:81 80 70 60 48 37 33 31 10 1 
   
*/
 
public   void  selectSort( int [] data) 
{
        
int  max  =
 data.length;
        
int
 m, temp;

        
for  ( int  i  =   0 ; i  <  max  -   1 ; i ++
{
            m 
=
 i;
            
for  ( int  j  =  i  +   1 ; j  <=  max  -   1 ; j ++
{
                
if  (data[j]  >  data[m]) 
{
                    m 
=
 j;
                }

            }


            
if  (m  !=  i)  {
                temp 
=
 data[i];
                data[i] 
=
 data[m];
                data[m] 
=
 temp;
            }


            System.out.print(
" 第  "   +  (i  +   1 +   "  次排序: " );
            
for  ( int  k  =   0 ; k  <=  max  -   1 ; k ++
{
                System.out.print(data[k] 
+   "   "
);
            }

            System.out.println();
        }

    }

posted on 2006-07-13 11:30 zJun's帛罗阁 阅读(446) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

导航

<2006年7月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

统计

常用链接

留言簿(15)

随笔分类

随笔档案

相册

收藏夹

博客

文档

站点

论坛

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜