zoukankan      html  css  js  c++  java
  • 两种选择排序法

    选择排序法与定位比较排序法相比较,比的次数没变,交换的次数减少了。

    #include<stdio.h>
    #define N 20
    void fun(int n,int *a)
    {
     int i,j,k,t;
     for(i=0;i<n-1;i++)
     {
      k=i;
      for(j=i+1;j<n;j++)//j=i+1,别写成0,该层for循环仅包含

    一个if语句,不包含下一个if语句
       if(a[k]>a[j])
        k=j;
      if(k!=i)//先默认a[i]为最小,每次执行内层for循环,找

    到最小的元素和a[i]交换,减少了交换次数,k相当于监视哨
      {
       t=a[k];a[k]=a[i];a[i]=t;//注意下标是i
      }
     }
    }
    void putmatrix(int n,int *a)
    {
     int i;
     for(i=0;i<n;i++)
     {
      printf("%4d",a[i]);//不能是*a
      if((i+1)%10==0)
       printf("\n");
     }
     printf("\n");
    }
    int main()
    {
     int a[N]={1010,2,86,76,56,89,400,5,6,3},n=10;
     printf("排序前:");//分号弄成中文啦
     putmatrix(n,a);
     printf("排序后:");
     fun(n,a);
     putmatrix(n,a);
     return 0;
    }

  • 相关阅读:
    [AGC020E] Encoding Subsets
    [Topcoder16346]TwoPerLine
    CF913E Logical Expression
    英语面试
    CRM
    WEB使用第三方支付服务大致流程
    OO语言 prototype 初级用法
    flash设置字体
    air 提示问题
    c#里的BYTE
  • 原文地址:https://www.cnblogs.com/hxsyl/p/2400371.html
Copyright © 2011-2022 走看看