一个插入排序算法

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

写这个算法的初衷是利用二分法排序为原型,借鉴C++的泛型的概念,写一个适合不同数据结构,适用于数组和指针的插入和排序一体的程序,但是时间和经理有限,经验也差很多,最近又有其他工作,只好把已经完成的部分贴出来,希望大家能够指正和完善,多多提出宝贵建议,谢谢。

//插入排序函数,v0.0

#include "stdafx.h"

//定义不同的数据结构,用户也可以自己定义

typedef int DataType;

//比较函数

int CompareDate(DataType Src, DataType Des)

{

if(Src>Des)

return 1;

else if(Src<Des)

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;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航