• 排序算法


    【冒泡排序】

        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;
    }
  • 相关阅读:
    Flutter 复制文本到剪切板、从剪切板读取文本【转】
    CSS元素超出部分滚动,并隐藏滚动条【转】
    Flutter解决按钮请求防重复提交【转】
    CSS文字超出宽度自动换行【转】
    flutter 使用 url_launcher 唤起三方应用【转】
    Dart 基本数据类型与类型归属判断【转】
    JS 生成唯一字符串UUID【转】
    gtk+笔记
    Win32 API笔记
    utf-8与utf-16的区别
  • 原文地址:https://www.cnblogs.com/shuicaojing/p/13903866.html
Copyright © 2020-2023  润新知