zoukankan      html  css  js  c++  java
  • 算法学习记录排序——选择排序(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 }
  • 相关阅读:
    Python使用struct处理二进制
    ProtoBuf与Python结合使用初步
    智能指针shared_ptr的用法
    C++模板
    mac 安装protobuf,并编译为java,c++,python
    java的HashCode方法
    JVM的内存结构
    HashSet与TreeSet的比较
    面向对象的特征有哪些方面?
    Collection与Collections的区别是什么?
  • 原文地址:https://www.cnblogs.com/jsgnadsj/p/3457772.html
Copyright © 2011-2022 走看看