zoukankan      html  css  js  c++  java
  • 插入排序(三)——shell插入排序(不稳定排序)

    //文件shell_InsertSort.cpp
    #include <stdio.h>
    #include "table.h"void shellinsertsort(table *tab)
    {
     int i,j,d;
     d=tab->length/2;
     while(d>=1)
     {
      for(i=d+1;i<=tab->length;i++)/*从第d+1个元素开始,将所有元素有序插入相应分组中*/
      {
       tab->r[0].key =tab->r.key ;/*保存第i个元素*/
       j=i-d;  /*向前找插入位置*/
       while(tab->r[0].key <tab->r[j].key&&j>0)/*这一步实质是直接插入排序,从后往前找插入位置,0的位置为哨兵*/
       {
        tab->r[j+d].key=tab->r[j].key;/*相当于将与i同一组的,将i的位置空出来,以便往后移,来找i的位置*/
        j=j-d;/*继续向前查找插入位置*/
       }
       tab->r[j+d].key=tab->r[0].key ;
      }
      d=d/2;/*继续分组来排序,直到d为1结束*/
     }
    }
    void main()
     {
      int i; table tab;
     //tab.length=7;
     
     printf("please input the length of the table \\n");
     //printf("\\n");
     scanf("%d",&tab.length );
     tab.r[0].key=0;  //getchar();//消除回车符
     printf("please input the item of the table \\n");
     
     for (i=1;i<=tab.length;i++)
     {
      scanf("%d",&tab.r.key );
      
     }
      printf("the old order \\n");
      for (i=1;i<=tab.length;i++)
     {
      printf("%d\\t",tab.r.key );
      
     }
      
      printf("\\n the new order \\n"); 
     
     shellinsertsort(&tab); for (i=1;i<=tab.length;i++)
      {
       printf("%d\\t",tab.r.key );
      }
     
     scanf("%d",&i);
     
     }
  • 相关阅读:
    js 兼容nextSibling
    ie background repeat 出现空白
    自制日历组件
    js cookie操作方法
    html table 上下左右边框
    js window.onload函数
    js 兼容event.target
    ie minheight
    css table 固定宽度
    [翻译]建立你的第一个Visual WebGui应用程序
  • 原文地址:https://www.cnblogs.com/zhiji6/p/1649301.html
Copyright © 2011-2022 走看看