zoukankan      html  css  js  c++  java
  • 排序算法

    【冒泡排序】

        int i, j, temp;
        for (j = 0; j < len - 1; j++)
        {
            for (i = 0; i < len - 1 - j; i++)
            if (a[i] > a[i + 1])
            {
                temp = a[i];
                a[i] = a[i + 1];
                a[i + 1] = temp;
            }
        }

    过程图:https://blog.csdn.net/lu_1079776757/article/details/80459370

    以下写法都对:

        int i, j, temp;
        for (i = 0; i< len ; j++)
        {
            for (j = i+1; i < len; i++)
            if (a[i] > a[j])
            {
                temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
        }
        int i, j, temp;
        for (i = 0; i < len ; j++)
        {
            for (j = len-2; i >=j; j--)
            if (a[j] > a[j + 1])
            {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
        int i, j, temp;
        for (i = 0; i < len;i++)
        {
            for (j = 1; j < len - i; j++)
            if (a[j-1] > a[j])
            {
                temp = a[j];
                a[j] = a[j-1];
                a[j-1] = temp;
            }
        }
        int i, j, temp;
        for (i = len-1; i < 0; i--)
        {
            for (j = 0; j < i; j++)
            if (a[j] > a[j + 1])
            {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }

    大学老师批作业的时候该多发愁啊。

    【选择排序】

    #include<stdlib.h>
    #include<string.h>
    #include<math.h>
    
    int main(int argc, char* argv[])
    {
        int a[]={4,3,5,2,6,1};
        int temp,min;
        int len=sizeof(a)/sizeof(int);
        //printf("len=%d
    ",len);
        int i,j,k;
        for(i=0;i<len-1;i++){
            min=i;
            for(j=i+1;j<len;j++){
                if(a[j]<a[min]){
                    min=j;
                }
            }
            if(min!=i){
                temp=a[min];
                a[min]=a[i];
                a[i]=temp;
                /*
                for(k=0;k<len;k++){
                    printf("%d ",a[k]);
                }
                printf("
    ");
                */
            }
        }
        return 0;
    }

    if(min!=i)放在里面也对,不过交换次数超级多。

    #include<stdlib.h>
    #include<string.h>
    #include<math.h>
    
    int main(int argc, char* argv[])
    {
        int a[]={6,5,4,3,2,1};
        int temp,min;
        int len=sizeof(a)/sizeof(int);
        //printf("len=%d
    ",len);
        int i,j,k;
        for(i=0;i<len-1;i++){
            min=i;
            for(j=i+1;j<len;j++){
                if(a[j]<a[min]){
                    min=j;
                }
                if(min!=i){
                    temp=a[min];
                    a[min]=a[i];
                    a[i]=temp;
                }
                /*
                for(k=0;k<len;k++){
                    printf("%d ",a[k]);
                }
                printf("
    ");
                */
            }
        }
        return 0;
    }
  • 相关阅读:
    HGOI20180822 五校联考卷
    HGOI20180817 (NOIP模拟Day1 task)
    HGOI2010816 (NOIP 提高组模拟赛 day1)
    HGOI20180815 (NOIP 提高组模拟赛 day2)
    HGOI20180814 (NOIP 模拟Day1)
    HGOI20180813 (NOIP2018 提高组 Day2 模拟试题)
    小工具
    HGOI20180812 (NOIP2018 提高组 Day1 模拟试题)
    浅谈高斯消元
    浅谈线性基
  • 原文地址:https://www.cnblogs.com/shuicaojing/p/13903866.html
Copyright © 2011-2022 走看看