1![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
排序可以有很多种,但是其目的应该都是为了能够在海量的数据里迅速查找到
你要的数据信息,折半查找是种比较快的方式,但前提是要是有 序的排序才可以。
下面是我刚开始学习C语言的时候写的一些简单排序代码:
#include "stdafx.h"
2
#include <string.h>
3![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
4
static int SIZE = 11;
5![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
6
//冒泡法排序
7
void Compositor( int nNum[])
8![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif)
{
9
int nTemp = 0;
10![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
11
for (int i = 0; i < SIZE-1; i++)
12
for (int j =i+1; j < SIZE; j++)
13![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
14
if (nNum[i] > nNum[j])
15![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
16
nTemp = nNum[i];
17![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
18
nNum[i] = nNum[j];
19![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
20
nNum[j] = nTemp;
21
}
22
}
23
}
24![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
25![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
26
//二分查找函数
27
int HalfSearch(int nNum[], int nSearchNum)
28![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif)
{
29
int SearchNum = 0;
30![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
31
int nLeft = 0;
32![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
33
int nRight = SIZE-1;
34![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
35
int nMiddle = 0;
36
37
while(nLeft <= nRight)
38![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
39
nMiddle = (nRight + nLeft) / 2;
40![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
41
if(nNum[nMiddle]==nSearchNum)
42![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
43
SearchNum=1;//找到为1,否则为0
44
break;
45
}
46![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
47
if(nNum[nMiddle]<nSearchNum)
48
nLeft= nMiddle+ 1;//mid往右移动
49
else
50
nRight = nMiddle - 1;//mid往左移动右逢源
51![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
52
}
53
//fond的初始值为0,一旦找到,found变量被置1,引发此条件语句,
//从而输出找到的结果,否则告知用户找不到
54
if(SearchNum)
55
return nMiddle;
56
else
57
return 0;
58
}
59![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
60
int main(int argc, char* argv[])
61![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif)
{
62![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
int a[] =
{1, 33, 22, 3, 51, 88, 90, 100, 102, 2, 11};
63
Compositor(a);
64
int nTemp = HalfSearch(a, 111);
65
if (nTemp)
66![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
67
printf("%d\r\n",a[nTemp]);
68
}
69
else
70![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
71
printf("没找到!\r\n");
72
}
73
return 0;
74
}
posted on 2011-04-13 18:11
CrackerCS 阅读(343)
评论(0) 编辑 收藏 引用 所属分类:
C