• 算法学习记录排序——选择排序(Simple Selection Sort)


    之前在冒泡排序的附录中提到可以在每次循环时候,不用交换操作,而只需要记录最小值下标,每次循环后交换哨兵与最小值下标的书,

    这样可以减少交换操作的时间。

    这种方法针对冒泡排序中需要频繁交换数组数字而改进。

    以此类推。。。

    代码:

     1 void selectionSort(myDataType *ary,int len)
     2 {
     3     int i,j;
     4     int mymin;    //记录最小值下标
     5     for (i=0;i<len;i++) // 哨兵下标
     6     {
     7         mymin = i;
     8         for (j=i+1;j<len;j++) //欲比较的下标
     9         {
    10             if (ary[mymin] > ary[j])
    11             {
    12                 mymin = j;
    13                 
    14             }
    15         }
    16         if (i != mymin)
    17         {
    18             myDataType temp;
    19             temp = ary[i];
    20             ary[i] = ary[mymin];
    21             ary[mymin] = temp;
    22         }
    23     }
    24 }

    全部代码:

     1 #include "stdafx.h"
     2 
     3 
     4 typedef int myDataType;
     5 myDataType src_ary[10] = {9,1,5,8,3,7,6,0,2,4};
     6 
     7 void prt_ary(myDataType *ary,int len)
     8 {
     9     int i=0;
    10     while(i < len)
    11     {
    12         printf(" %d ",ary[i++]);
    13     }
    14     printf("\n");
    15 }
    16 void selectionSort(myDataType *ary,int len)
    17 {
    18     int i,j;
    19     int mymin;    //记录最小值下标
    20     for (i=0;i<len;i++) // 哨兵下标
    21     {
    22         mymin = i;
    23         for (j=i+1;j<len;j++) //欲比较的下标
    24         {
    25             if (ary[mymin] > ary[j])
    26             {
    27                 mymin = j;
    28                 
    29             }
    30         }
    31         if (i != mymin)
    32         {
    33             myDataType temp;
    34             temp = ary[i];
    35             ary[i] = ary[mymin];
    36             ary[mymin] = temp;
    37         }
    38     }
    39 }
    40 int _tmain(int argc, _TCHAR* argv[])
    41 {
    42     printf("before sort:\n");
    43     prt_ary(src_ary,10);
    44 
    45     selectionSort(src_ary,10);
    46     
    47     printf("after sort:\n");
    48     prt_ary(src_ary,10);
    49 
    50 
    51 
    52     getchar();
    53     return 0;
    54 }
  • 相关阅读:
    解压cpio.gz文件
    get/post时中文乱码问题的解决办法(转载)
    linux下卸载oracle 10g
    linux下oracle自启动
    linux mount远程磁盘(转载)
    转载JS编写随机全屏浮动窗口
    linux下配置vsftpd(FTP)
    rhel 6安装oracle 11g R2
    MSSQL数据库备份还原常用SQL语句及注意
    总结一下,写的很差!还是抄吧,不丢人了。
  • 原文地址:https://www.cnblogs.com/jsgnadsj/p/3457772.html
Copyright © 2020-2023  润新知