GlobalFunctions.cpp
资源名称:08.zip [点击查看]
上传用户:ynjin1970
上传日期:2014-10-13
资源大小:6438k
文件大小:2k
源码类别:
中间件编程
开发平台:
Visual C++
- #include "stdafx.h"
- #include "Triangulate.h"
- #include "globalfunctions.h"
- /*
- 快速排序
- */
- /*
- 快速排序法对于大量数据的排序特别有用。其基本原理是:首先检查数据列表中的数
- 据数,如果小于两个,则直接退出程序。如果有超过两个以上的数据,就选择一个分
- 割点将数据分成两个部分,小于分割点的数据放在一组,其余的放在另一组,然后分
- 别对两组数据排序。
- 通常分割点的数据是随机选取的。这样无论你的数据是否已被排列过,你所分割成的
- 两个字列表的大小是差不多的。而只要两个子列表的大小差不多,该算法所需的步骤
- 就是N * log(N) 步。对于使用比较法进行排序的算法来讲这是最快的方法。
- 注意:C++中提供了一个快速排序函数qsort()
- */
- /*
- void quicksort(int src[],int low,int high)
- {
- int i,j;
- int tmp;
- if(low<high)
- {
- i=low;
- j=high;
- tmp=src[low]; //选第一个值
- while(i<j)
- {
- while(i<j && src[j]>tmp)
- j--;
- if(i<j)
- src[i++]=src[j];
- while(i<j&&src[i]<=tmp)
- i++;
- if(i<j)
- src[j--]=src[i];
- }
- src[i]=tmp;
- quicksort(src,low,i-1);
- quicksort(src,i+1,high);
- }
- }
- */
- // 供C++快速排序函数qsort调用
- int compare( const void *elem1, const void *elem2 )
- {
- /* Compare all of both */
- XYZ e1 = *(XYZ *)elem1;
- XYZ e2 = *(XYZ *)elem2;
- if ( e1.x < e2.x )
- return -1;
- else if( e1.x == e2.x )
- return 0;
- else
- return 1;
- }
- XYZ::XYZ(double x0, double y0, double z0)
- {
- x = x0;
- y = y0;
- z = z0;
- }
- XYZ::XYZ()
- {
- }
- TRIANGLE::TRIANGLE()
- {
- p1 = -1;
- p2 = -1;
- p3 = -1;
- t1 = NEIGHBOR_UNKNOWN;
- t2 = NEIGHBOR_UNKNOWN;
- t3 = NEIGHBOR_UNKNOWN;
- }