1排序可以有很多种,但是其目的应该都是为了能够在海量的数据里迅速查找到
你要的数据信息,折半查找是种比较快的方式,但前提是要是有 序的排序才可以。
下面是我刚开始学习C语言的时候写的一些简单排序代码:
#include "stdafx.h"
2#include <string.h>
3
4static int SIZE = 11;
5
6//冒泡法排序
7void 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//二分查找函数
27int 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
60int 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 阅读(347)
评论(0) 编辑 收藏 引用 所属分类:
C