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);
    }



  • 相关阅读:
    C# 安装包中添加卸载
    如何提取json里面的数据
    JSON写入
    在Net下处理Json
    Linq To Json
    衡量视频序列特性的TI(时间信息)和SI(空间信息)
    DotCMS安装步骤
    【12c OCP】最新CUUG OCP071考试题库(52题)
    【ocp12c】最新Oracle OCP071考试题库(44题)
    【Oracle 12c】最新CUUG OCP071考试题库(53题)
  • 原文地址:https://www.cnblogs.com/ikodota/p/learn_pointer_shell_sort.html
Copyright © 2011-2022 走看看