您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> C/C++ >> 一个插入排序算法

一个插入排序算法

来源:网络整理     时间:2016/8/10 19:40:52     关键词:

关于网友提出的“ 一个插入排序算法”问题疑问,本网通过在网上对“ 一个插入排序算法”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 一个插入排序算法
描述:

写这个算法的初衷是利用二分法排序为原型,借鉴C++的泛型的概念,写一个适合不同数据结构,适用于数组和指针的插入和排序一体的程序,但是时间和经理有限,经验也差很多,最近又有其他工作,只好把已经完成的部分贴出来,希望大家能够指正和完善,多多提出宝贵建议,小弟过几天来结帖,谢谢。
//插入排序函数,v0.0
#include "stdafx.h"
//定义不同的数据结构,用户也可以自己定义
typedef int DataType;
//比较函数
int CompareDate(DataType Src, DataType Des)
{
 if(Src>Des)
  return 1;
 else if(Src<>
  return -1;
 else
  return 0;
}
//排序函数
bool  CenFind(DataType TempNode, DataType *tHead, long &from , long &to,long &mid,int(*fn)(DataType ,DataType))
{
  int i = 0;           
        DataType tCen = NULL;
  mid = (from + to)/2; 
        tCen = tHead[mid];    
        i = fn(TempNode ,tCen );     
        if(i>0)
        {
                from = mid + 1;
                if( (mid ==  from)||(mid == to))
     return false;
    CenFind(TempNode,tHead,from,to,mid,fn);
        }
        else if(i == 0)
        {
                return true;
        }
        else
        {
                to = mid - 1;
                if( (mid ==  from)||(mid == to))
                        return false;
                CenFind(TempNode,tHead,from,to,mid,fn);
        }
}
int main(int argc, char* argv[])
{
 DataType WholeDate[10] ;
 DataType *tHead = NULL;
 tHead = &WholeDate[0];
 int i;
 for(i = 0;i<10;i++)
 {
  WholeDate[i]=-1;
 }
 DataType Temp;
 long from,to,mid;
 long length=0;
 for(i = 0;i<8;i++)
 {
  from = 0;
  to = length;
  mid = 0;
 
  printf("DataType=");
  scanf("%d",&Temp);
  if(length==0)
  {
    WholeDate[length] = Temp;
    length++;
  }
  else
  {
   if(CenFind(Temp, tHead, from , to,mid,CompareDate))
   {
   }
   else 
   {
     if(mid == length)
     {
      //add
      /*for(int t = length; t>=to; t--)
      {
       WholeDate[t+1] = WholeDate[t];
      }
      WholeDate[to] = Temp;*/
      WholeDate[length] = Temp;
      
     }
     else
     {
      //insert
      for(int t = length; t>=to+1; t--)
      {
       WholeDate[t+1] = WholeDate[t];
      }
      WholeDate[to+1] = Temp;
     }     
     length++;
   }    
  }
 }
 for(i = 0;i<10;i++)
 {
  printf("WholeDate[%d] = %d\n",i,WholeDate[i]);
 }
 printf("Hello World!\n");
 return 0;
}


以上介绍了“ 一个插入排序算法”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3196290.html

相关图片

相关文章