排序算法
urika
这个作者很懒,什么都没留下…
展开
-
交换排序法
交换法的程序最清晰简单,每次用当前的元素一一的同其后的元素比较并交换。 #include void ExchangeSort(int* pData,int Count) { int iTemp; for(int i=0;i { for(int j=i+1;j { if(pData[j] { iTemp = pData[i];转载 2009-04-22 11:15:00 · 2139 阅读 · 0 评论 -
冒泡排序法
1.冒泡法: 这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡: #include void BubbleSort(int* pData,int Count) { int iTemp; for(int i=1;i { for(int j=Count-1;j>=i;j--) { if(pData[j] {转载 2009-04-22 11:03:00 · 602 阅读 · 0 评论 -
归并排序法
#includestruct st{ int key; int xb;//下标};void merge(struct st a[],struct st temp[],int u,int m,int v)// 一次归并(以a[].key从小到大将结构体排序){ int i,j,k,t; i=u;//i从第一段的起始位置开始,一直到最终位置m; j=m+1;//j从第2段的起始位置开始,转载 2009-04-22 11:11:00 · 652 阅读 · 0 评论 -
双向冒泡排序法
通常的冒泡是单向的,而这里是双向的,也就是说还要进行反向的工作。 代码看起来复杂,仔细理一下就明白了,是一个来回震荡的方式。 写这段代码的作者认为这样可以在冒泡的基础上减少一些交换(我不这么认为,也许我错了)。 反正我认为这是一段有趣的代码,值得一看。 #include void Bubble2Sort(int* pData,int Count) { int iTemp; int lef原创 2009-04-22 11:12:00 · 665 阅读 · 0 评论 -
插入排序法
插入法较为复杂,它的基本工作原理是抽出牌,在前面的牌中寻找相应的位置插入,然后继续下一张 #include void InsertSort(int* pData,int Count) { int iTemp; int iPos; for(int i=1;i { iTemp = pData[i]; iPos = i-1; while((iPos>=0) &&原创 2009-04-22 11:13:00 · 491 阅读 · 0 评论 -
选择排序法法
现在我们终于可以看到一点希望:选择法,这种方法提高了一点性能(某些情况下) 这种方法类似我们人为的排序习惯:从数据中选择最小的同第一个值交换,在从省下的部分中 选择最小的与第二个交换,这样往复下去。 #include void SelectSort(int* pData,int Count) { int iTemp; int iPos; for(int i=0;i { iT转载 2009-04-22 11:14:00 · 586 阅读 · 0 评论 -
SHELL排序
这个排序非常复杂,看了程序就知道了。首先需要一个递减的步长,这里我们使用的是9、5、3、1(最后的步长必须是1)。 工作原理是首先对相隔9-1个元素的所有内容排序,然后再使用同样的方法对相隔5-1个元素的排序 以次类推。 #include void ShellSort(int* pData,int Count) { int step[4]; step[0] = 9; step[原创 2009-04-22 11:12:00 · 1688 阅读 · 0 评论 -
快速排序
#include void run(int* pData,int left,int right) { int i,j; int middle,iTemp; i = left; j = right; middle = pData[(left+right)/2]; //求中间值 do{ while((pData[i] i++; whi转载 2009-04-22 11:13:00 · 398 阅读 · 0 评论