1
排序可以有很多种,但是其目的应该都是为了能够在海量的数据里迅速查找到
你要的数据信息,折半查找是种比较快的方式,但前提是要是有 序的排序才可以。
下面是我刚开始学习C语言的时候写的一些简单排序代码:
#include "stdafx.h"
2
#include <string.h>
3
4
static int SIZE = 11;
5
6
//冒泡法排序
7
void Compositor( int nNum[])
8

{
9
int nTemp = 0;
10
11
for (int i = 0; i < SIZE-1; i++)
12
for (int j =i+1; j < SIZE; j++)
13
{
14
if (nNum[i] > nNum[j])
15
{
16
nTemp = nNum[i];
17
18
nNum[i] = nNum[j];
19
20
nNum[j] = nTemp;
21
}
22
}
23
}
24
25
26
//二分查找函数
27
int HalfSearch(int nNum[], int nSearchNum)
28

{
29
int SearchNum = 0;
30
31
int nLeft = 0;
32
33
int nRight = SIZE-1;
34
35
int nMiddle = 0;
36
37
while(nLeft <= nRight)
38
{
39
nMiddle = (nRight + nLeft) / 2;
40
41
if(nNum[nMiddle]==nSearchNum)
42
{
43
SearchNum=1;//找到为1,否则为0
44
break;
45
}
46
47
if(nNum[nMiddle]<nSearchNum)
48
nLeft= nMiddle+ 1;//mid往右移动
49
else
50
nRight = nMiddle - 1;//mid往左移动右逢源
51
52
}
53
//fond的初始值为0,一旦找到,found变量被置1,引发此条件语句,
//从而输出找到的结果,否则告知用户找不到
54
if(SearchNum)
55
return nMiddle;
56
else
57
return 0;
58
}
59
60
int main(int argc, char* argv[])
61

{
62
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
{
67
printf("%d\r\n",a[nTemp]);
68
}
69
else
70
{
71
printf("没找到!\r\n");
72
}
73
return 0;
74
}
posted on 2011-04-13 18:11
CrackerCS 阅读(351)
评论(0) 编辑 收藏 引用 所属分类:
C