zoukankan      html  css  js  c++  java
  • 算法基础之排序(2)--选择排序 改进

     1    /**********************************************************************************************************          
     2     * Function        : test          
     3     * Create Date     : 2014/03/23         
     4     * Author          : NTSK13          
     5     * Email           : beijiwei@qq.com          
     6     * Copyright       : 欢迎大家和我一起交流学习,转载请保持源文件的完整性。          
     7                                  任何单位和个人不经本人允许不得用于商业用途          
     8                                  转载请注明 转自 http://blog.csdn.net/beijiwei          
     9     * Version          : V0.1            
    10     * date             : 2014/03/23        
    11     * history          : V0.1             
    12     ***********************************************************************************************************          
    13                
    14     算法基础之排序(2)--选择排序 改进
    15      
    16     基本思想: 对待排序的一组数据从前之后进行扫描,若发现相邻的两个数不同时,将这两个数进行交换. 
    17               升序和降序是同样道理.  
    18      
    19      假如待排序的一组数存于array[N],则需要对数组进行N-1次扫描 
    20       
    21      第1次扫描: 目标array[0] , 分别和array[1],array[2]...array[N-1] 进行对比,若比array[0]小,则交换.之后array[0]为最小值 
    22      第2次扫描: 目标array[1] , 分别和array[2],array[3]...array[N-1] 进行对比,若比array[1]小,则交换.之后array[0]为次小值 
    23        . 
    24        . 
    25        . 
    26      第N-1次扫描: 目标array[N-2] , 和array[N-1] 进行对比,若比array[N-1]小,则交换.之后array[N-1]为最大值. 
    27      结束. 
    28      
    29      
    30     缺点:     这种方法如果两个数不等,则每次都要交换. 
    31                 
    32     改进:     在一次扫描时,只记录下标,等该次扫描结束,有改变再交换大小. 
    33      
    34     **********************************************************************************************************/                    
    35     #include<stdio.h>                   
    36                                       
    37             
    38     int main()                  
    39     {                  
    40         int i=0,j=0,tmp=0,k=0,array[10]={2,5,6,8,4,3,1,7,9,0};    
    41           
    42         printf("Before sort, The element of array is: 
    ");    
    43       
    44         for(i=0;i<10;i++)  
    45             printf("%d 	",array[i]);     
    46         
    47     /*********************************************************************************************************/  
    48         for(i=0;i<9;i++)  
    49         {     
    50             tmp=array[i];  
    51             k=0;  
    52             for(j=i+1;j<9;j++)  
    53             {  
    54                 if(tmp>array[j])  
    55                 {  
    56                     tmp=array[j];  
    57                     k=j;  
    58                 }  
    59             }  
    60             if(k!=0)  
    61             {  
    62                 tmp=array[i];  
    63                 array[i]=array[k];  
    64                 array[k]=tmp;  
    65             }  
    66         }  
    67       
    68     /*********************************************************************************************************/  
    69         printf("
     After sort, The element of array is: 
    ");    
    70         for(i=0;i<10;i++)  
    71             printf("%d 	",array[i]);     
    72         
    73         printf("
    ");     
    74       
    75         return 0;    
    76     }   
  • 相关阅读:
    BZOJ1264 [AHOI2006]基因匹配Match 动态规划 树状数组
    BZOJ1845 [Cqoi2005] 三角形面积并 扫描线 计算几何
    BZOJ1258 [CQOI2007]三角形tri 模拟
    BZOJ4972 八月月赛 Problem B 小Q的方格纸 二维前缀和
    BZOJ1218 [HNOI2003]激光炸弹 二维前缀和
    BZOJ1263 [SCOI2006]整数划分 高精度
    BZOJ1209 [HNOI2004]最佳包裹 三维凸包 计算几何
    BZOJ1207 [HNOI2004]打鼹鼠 动态规划
    BZOJ1202 [HNOI2005]狡猾的商人 spfa
    BZOJ1201 [HNOI2005]数三角形 大力出奇迹
  • 原文地址:https://www.cnblogs.com/ntsk13/p/3701372.html
Copyright © 2011-2022 走看看