zoukankan      html  css  js  c++  java
  • 插入排序

    代码: 

    /**************************************************
     * 插入排序
     *
     * 参考:算法导论 第3版 第一部分 第2章 2.1
     *
     * 本例中,数组的第0个位置存放的数值无意义,不参与程序运行过程
     **************************************************/
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    // 插入排序
    void insertion_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);
        
        // 插入排序
        insertion_sort(A, length);
        
        // 打印排序后的数组
        printf("After sort:
    ");
        display(A, length);
        
        return 0;
    }
    
    // 插入排序
    void insertion_sort(int A[], size_t length) {
        for (size_t i = 2; i <= length; ++i) {
            int key = A[i];
            size_t j;
            for (j = i - 1; j > 0 && A[j] > key; --j) {
                A[j + 1] =  A[j];
            }
            A[j + 1] = key;
        }
    }
    
    // 使用随机数填充数组
    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:
    398 176 747 234 835 263 121 459 155 227 
    After sort:
    121 155 176 227 234 263 398 459 747 835 
  • 相关阅读:
    [转载]TFS测试管理
    [转载]TFS发送邮件提醒功能
    [转载]TFS与Project、Excel同步
    [转载]TFS源代码管理8大注意事项
    [转载]TFS源代码管理
    [转载]项目风险管理七种武器之结语
    [转载]项目风险管理七种武器-拳头
    刷新SqlServer所有视图元数据的存储过程
    MSSQL 触发器 暂停 和 启动
    给 Easyui Datagrid 扩展方法
  • 原文地址:https://www.cnblogs.com/xwoder/p/4491520.html
Copyright © 2011-2022 走看看