• C语言 指针练习希尔排序法


    #include <stdio.h>
    void print_result(float *,int);
    void Shell_Sort(float *,int);


    int main()
    {
    int i;
    float array[10];
    float * pointer;
    printf("请输入10个数:\n");
    for(i=0;i<10;i++)
    {
    scanf("%f",&array[i]);
    }
    pointer=array;
    Shell_Sort(pointer,10);
    print_result(pointer,10);


    return 0;
    }

    void print_result(float *p,int n)
    { //输出结果
    int k;
    for(k=0;k<n;k++)
    {
    printf("%g\t",*(p+k));
    }
    }

    void Shell_Sort(float *pt,int n)
    {//全用指针的希尔排序法
    int d=n; //增量初值
    int i,j;
    float tempnum;
    do
    {
    d/=2; //求下一增量
    //以下为一趟增量为d的希尔插入排序;
    for(i=d; i<n;i++) //将array[d+1,...n]分别插入各组当前的有序区
    {
    if(*(pt+i) > *(pt+i-d)){
    tempnum=*(pt+i); j=i-d; //tempnum只是暂存单元,不是哨兵;
    do{ //查找a[i]的插入位置
    *(pt+j+d)=*(pt+j) ; //后移记录
    j-=d; //查找前一记录

    }while(j>=0&&tempnum>*(pt+j));
    *(pt+j+d)=tempnum; //插入array[i]到正确的位置上
    }
    }

    }while(d>1);


    }


    附加以前做的希尔排序图及代码:

    希尔排序法

    ////=======================================
    void Shellpass(int a[],int d,int n)
    {//希尔排序法中的一趟排序,d为增量
    int i,j,t;
    int c;
    for(i=d; i<n;i++) //将a[d+1,...n]分别插入各组当前的有序区
    {
    if(a[i]<a[i-d]){
    t=a[i]; j=i-d; //t只是暂存单元,不是哨兵;
    do{ //查找a[i]的插入位置
    a[j+d]=a[j]; //后移记录
    j-=d; //查找前一记录

    }while(j>=0&&t<a[j]);
    a[j+d]=t; //插入a[i]到正确的位置上

    c=' ';
    }
    else
    {
    c='.';
    }
    int l;
    for(l=0;l<n;l++)
    {
    printf("%3c%c",a[l],c);
    }
    printf("\n");

    }
    printf("\n");
    }
    void ShellSort(int a[],int n)
    {
    printf("\n希尔排序法过程:\n");
    int increment=n; //增量初值
    do
    {
    increment/=2; //求下一增量
    Shellpass(a,increment,n); //一趟增量为increment的希尔插入排序;
    }while(increment>1);
    }



  • 相关阅读:
    三级联动下拉菜单1
    IP地址查询接口及调用方法
    实现简单的网页拖拽效果
    [转载]PHP如何获取客户端真实IP
    mysql(二)连接查询
    php exec 执行php脚本
    PHP-将某一目录下文件压缩成zip格式
    从读书时代想我的程序之路
    Github上建立自己的网站
    小米手机购买程序,如果是我,我会怎么写
  • 原文地址:https://www.cnblogs.com/ikodota/p/learn_pointer_shell_sort.html
Copyright © 2020-2023  润新知