• 选择排序


    代码:

    /**************************************************
     * 选择排序
     *
     * 参考:算法导论 第3版 第一部分 第2章 2.2
     *
     * 本例中,数组的第0个位置存放的数值无意义,不参与程序运行过程
     **************************************************/
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    // 选择排序
    void selection_sort(int [], size_t);
    
    // 使用随机数填充数组
    void fill_array_with_random(int [], size_t);
    
    // 打印数组
    void display(int [], size_t);
    
    int main(int argc, const char * argv[]) {
        // 设定数组长度
        size_t length = 10;
        int A[length];
        
        // 使用随机数填充数组
        fill_array_with_random(A, length);
        
        // 打印排序前的数组
        printf("Before sort:
    ");
        display(A, length);
        
        // 插入排序
        selection_sort(A, length);
        
        // 打印排序后的数组
        printf("After sort:
    ");
        display(A, length);
        
        return 0;
    }
    
    // 选择排序
    void selection_sort(int A[], size_t length) {
        for (size_t i = 1; i <= length; ++i) {
            size_t i_min = i;
            for (size_t j = i + 1; j <= length; ++j) {
                if (A[j] < A[i_min]) {
                    i_min = j;
                }
            }
            
            // 交换元素
            int temp = A[i_min];
            A[i_min] = A[i];
            A[i] = temp;
        }
    }
    
    // 使用随机数填充数组
    void fill_array_with_random(int A[], size_t length) {
        // 指定生成的随机数范围为[lower_limit, upper_limit)
        int lower_limit = 100;
        int upper_limit = 1000;
        
        srand((unsigned int)time(NULL));
        for (size_t i = 1; i <= length; ++i) {
            A[i] = rand() % (upper_limit - lower_limit) + lower_limit;
        }
    }
    
    // 打印数组
    void display(int A[], size_t length) {
        for (size_t i = 1; i <= length; ++i) {
            printf("%d ", A[i]);
        }
        printf("
    ");
    }

    输出:

    Before sort:
    379 926 992 362 457 693 885 454 232 808 
    After sort:
    232 362 379 454 457 693 808 885 926 992 
  • 相关阅读:
    在Python下调用Labview
    CVX: Matlab Software for Disciplined Convex Programming
    ANSYS Electronics Desktop 调出HFSS模块
    在python下打开cmd,并调用其他py文件
    CVXOPT的安装
    分享小记:指数族分布
    应用运筹学基础:线性规划 (4)
    应用运筹学基础:线性规划 (3)
    应用运筹学基础:线性规划 (2)
    白话论文:A Tutorial on Principal Component Analysis
  • 原文地址:https://www.cnblogs.com/xwoder/p/4492709.html
Copyright © 2020-2023  润新知