• 选择排序 Chars


    在这里,贴出选择排序源码,以期大神能指出问题所在,在两个排序中,得到的不是预期结果。

     1 #include "stdio.h"
     2 /*********************************
     3 选择排序降序
     4 ***********************************/
     5 void selectsort(int k[],int n)
     6 {
     7     int i,j,max;
     8     for(i=1;i<=n-1;i++)
     9     {
    10         max=i;
    11         for(j=i+1;j<=n;j++)
    12         {//在后n-i+1个元素中找到最大的元素位置
    13             if(k[j]>k[max])
    14             {
    15                 //用max记录最大元素的位置
    16                 max=j;
    17             }
    18             //如果最大的元素不位于后n-i+1个元素档第1个
    19             if(max!=i)
    20             {//元素的交换
    21                 k[0]=k[max];
    22                 k[max]=k[i];
    23                 k[i]=k[0];
    24             }
    25         }
    26     }
    27     printf("\nThe result of selection descending order for the array is\n");
    28     //输出排序后的结果
    29     for(i=1;i<=n;i++)
    30     {
    31         printf("%d ",k[i]);
    32     }
    33     printf("\n");
    34 }
    35 
    36 /*********************************
    37 选择排序升序
    38 ***********************************/
    39 void select_sort(int k[],int n)
    40 {
    41     int i,j,min;
    42     for(i=1;i<=n-1;i++)
    43     {
    44         min=i;
    45         for(j=i+1;j<=n;j++)
    46         {//在后n-i+1个元素中找到最小的元素位置
    47             if(k[j]<k[min])
    48             {
    49                 //用max记录最小元素的位置
    50                 min=j;
    51             }
    52             //如果最小的元素不位于后n-i+1个元素档第1个
    53             if(min!=i)
    54             {//元素的交换
    55                 k[0]=k[min];
    56                 k[min]=k[i];
    57                 k[i]=k[0];
    58             }
    59         }
    60     }
    61     printf("\nThe result of selection ascending order for the array is\n");
    62     //输出排序后的结果
    63     for(i=1;i<=n;i++)
    64     {
    65         printf("%d ",k[i]);
    66     }
    67     printf("\n");
    68 }
    69 
    70 /**********************************
    71 程序入口
    72 ***********************************/
    73 main()
    74 {
    75     //初始化序列,a[0]可任意置数
    76     int i,a[11]={-111,2,5,6,3,7,8,9,0,12,1};
    77     printf("The orginal data array is\n");
    78     //显示原序列中的元素
    79     for(i=1;i<=10;i++)
    80     {
    81         printf("%d ",a[i]);
    82     }
    83     //执行选择排序
    84     selectsort(a,10);
    85     select_sort(a,10);
    86 }
  • 相关阅读:
    PHP flush()与ob_flush()的区别
    IE 浏览器各个版本 JavaScript 支持情况一览表
    Jquery元素选取、常用方法
    JS阻止事件冒泡
    Ajax传递路径问题及解决
    JS时间戳格式化日期时间
    UEditor编辑器的使用
    使用PHPMailer发送邮件
    服务器数据库编码格式问题
    三级联动
  • 原文地址:https://www.cnblogs.com/chars/p/3048226.html
Copyright © 2020-2023  润新知