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 
  • 相关阅读:
    POJ1006: 中国剩余定理的完美演绎(非原创)
    poj 1001 分析
    document.createElement()的用法
    js innertext
    转csdn-css4
    css中最基本几个选择器
    Django解决(1146, "Table 'd42.django_session' doesn't exist")方法
    django清理migration终极解决办法
    linux中的fork炸弹
    nginx转发php文件到php-fpm服务器提示502错误
  • 原文地址:https://www.cnblogs.com/xwoder/p/4491520.html
Copyright © 2011-2022 走看看