zoukankan      html  css  js  c++  java
  • 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);
    }



  • 相关阅读:
    JDK13中将增加文本块特性
    java8新特性Lambda表达式为什么运行效率低
    Docker安装Mysql多版本
    Mysql中的降序索引底层实现
    GITHUB慢! 怎么办?
    程序员要搞明白CDN,这篇应该够了
    HTTP长连接
    Tomcat热部署与热加载
    Tomcat是一个Servlet容器?
    DPDK
  • 原文地址:https://www.cnblogs.com/ikodota/p/learn_pointer_shell_sort.html
Copyright © 2011-2022 走看看