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);
    }

  • 相关阅读:
    mysql正则表达式
    阿里云OSS 获取目录下所有文件
    docker 部署mvc项目 <四>
    docker部署项目 <三>
    docker 安装mysql数据库 <二>
    docker安装 <一>
    安装 Docker <一>
    Mongodb字段自增长
    EF的使用<三>
    EF 简单介绍<一>
  • 原文地址:https://www.cnblogs.com/darren-pty/p/13224026.html
Copyright © 2011-2022 走看看