zoukankan      html  css  js  c++  java
  • 希尔排序实例

    实例功能:接收一个含有整数元素的数组和一个包含元素个数的整数,将数组中的元素从小到大重新排序。并输出排序前后的数组。

    下面以模块划分的思想来实现此功能。

    打印数组元素模块:

    /* common.h */
    
    #ifndef _COMMON_H
    #define _COMMON_H
    
    void print_array(const int array[], int n);
    
    #endif
    /* common.c */
    
    #include "common.h"
    #include <stdio.h>
    
    void 
    print_array(int array[], int n)
    {
        int i;
    
        for(i = 0; i < n; i++)
            printf("%d ", array[i]);
        printf("
    ");
    }

    希尔排序模块:

    /* shell_sort.h */
    
    #ifndef _SHELL_SORT_H
    #define _SHELL_SORT_H
    
    void shell_sort(int array[], int n);
    
    #endif
    /* shell_sort.c */
    
    #include "shell_sort.h"
    
    void 
    shell_sort(int array[], int n)
    {
        int i, j, increment;
        int tmp;
        
        for(increment = n / 2; increment > 0; increment /= 2)
        {
            for(i = increment; i < n; i++)
            {
                tmp = array[i];
                for(j = i; j >= increment; j -= increment)
                {
                    if(tmp < array[j - increment])
                        array[j] = array[j - increment];
                    else
                        break;
                }
                array[j] = tmp;
            }
        }
    }

    主函数:

    /* shell_sort_test.c */
    
    #include <stdio.h>
    #include "shell_sort.h"
    #include "common.h"
    
    int 
    main(void)
    {
        int array[] = {34, 8, 64, 51, 32, 21};
        
        printf("Before sorted:");
        print_array(array, 6);
        shell_sort(array, 6);
        printf("After sorted :");
        print_array(array, 6);
        
        return 0;
    }

    Makefile文件:

    /* Makefile */
    
    target := sort_test
    objs := shell_sort_test.o shell_sort.o common.o
    $(target):$(objs)
        gcc -o $@ $^
    %.o:%.c
        gcc -c -o $@ $<
    
    clean:
        rm *.o sort_test

    测试过程:

    image

  • 相关阅读:
    52、saleforce 第一篇
    nodejs自定义模块
    NodeJS require路径
    Angularjs ngTable使用备忘
    HTML5拖拽功能中 dataTransfer对象详解
    Javascript闭包深入解析及实现方法
    Grunt实例
    Grunt插件uglify
    javascript 将字符串当函数执行
    多个springboot项目部署在同一tomcat上,出现jmx错误
  • 原文地址:https://www.cnblogs.com/nufangrensheng/p/3661782.html
Copyright © 2011-2022 走看看