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 
  • 相关阅读:
    poj 2676 Suduku (dfs)
    poj 1562 Oil Deposits (dfs)
    poj 2907 Collecting Beepers (dfs)
    poj 1655 Balancing Act (树形dfs)
    poj 3411 Paid Roads (dfs)
    hdu 2896 病毒侵袭 (AC)
    hdu 3065 病毒侵袭持续中 (AC)
    poj 2251 Dungeon Master (bfs)
    java中debug使用
    Swing入门级小项目总结
  • 原文地址:https://www.cnblogs.com/xwoder/p/4491520.html
Copyright © 2011-2022 走看看