zoukankan      html  css  js  c++  java
  • 2-C语言 排序算法

     

    (1)冒泡法排序法

    #include<stdio.h>
    
    void sort(int arr[], int num);
    
    int main(void)
    {
        int arr[10];
        int i;
    
        printf("please enter ten numbers:
    ");
        for (i = 0; i<10; i++)
            scanf("%d", &arr[i]);//scanf不能接收空格和回车符
        sort(arr,10);
        for (i = 0; i<10; i++)
            printf("%d	", arr[i]);
        return 0;
    }
    
    
    void sort(int arr[],int num)
    {
        int i,j= 0;
        int temp = 0;
    
        //冒泡法进行排序 
        for (i = 0; i < num-1; i++) //进行比较num-1趟  
        {
            for (j = 0; j < num - 1 - i; j++)  //比较次数依次递减 
            {
                if (arr[j]>arr[j + 1])
                {
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }

    (2)选择排序法

    #include<stdio.h>
    
    void sort(int arr[], int num);
    
    int main(void)
    {
        int arr[10];
        int i;
    
        printf("please enter ten numbers:
    ");
        for (i = 0; i<10; i++)
            scanf("%d", &arr[i]);//scanf不能接收空格和回车符
        sort(arr,10);
        for (i = 0; i<10; i++)
            printf("%d	", arr[i]);
        return 0;
    }
    
    //选择法(减少交换次数)
    void sort(int arr[],int num)
    {
        int i, j, k = 0;
        int temp = 0;
    
        for (i = 0; i < num-1; i++)//依次选取第一个数
        {
            k = i; //标记最小值
            for (j = i + 1; j<num; j++)//要比较的数
            {
                if (arr[k]>arr[j])
                {
                    k = j;
                }
            }
            //找到第0,1,2,3,... 先找最小的
            if (k != i)
            {
                temp = arr[i];//交换arr[k]和arr[i]的值
                arr[i] = arr[k];
                arr[k] = temp;
            }
        }
    }

    (3)递归排序法

    #include<stdio.h>
    
    void quick(int arr[], int L, int R);
    
    int main()
    {
        int arr[10];
        int i;
    
        printf("please enter ten numbers:
    ");
        for (i = 0; i<10; i++)
            scanf("%d", &arr[i]);
        quick(arr, 0, 9);
        for (i = 0; i<10; i++)
            printf("%d	", arr[i]);
        return 0;
    }
    void quick(int arr[], int L, int R)
    {
        int i = R;
        int j = L;
        int pivot = arr[(i + j) / 2]; //中间
        while (j <= i)
        {
            while (arr[j]<pivot){
                j++;
            }
            while (pivot<arr[i]){
                i--;
            }
            if (j <= i)
            {
                int temp = arr[j];
                arr[j] = arr[i];
                arr[i] = temp;
                j++;
                i--;
    
            }
        }
        if (L<i) quick(arr, L, i);
        if (j<R) quick(arr, j, R);
    }

  • 相关阅读:
    报错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1
    Flink 集群安装配置
    配置Flink依赖的pom文件时报错:flink-clients_2.11 & flink-streaming-java_2.11
    解析流中的Xml文件时,报错:java.net.MalformedURLException: no protocol
    kafka产生的数据通过Flume存到HDFS中
    kafka服务自动关闭
    Flink安装启动
    hadoop长时间运行后,stop-all.sh报错
    Linux环境下配置maven环境
    vue2 自定义时间过滤器
  • 原文地址:https://www.cnblogs.com/darren-pty/p/13224026.html
Copyright © 2011-2022 走看看