随笔-11  评论-0  文章-0  trackbacks-0
 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[] = {133223518890100102211};
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 阅读(339) 评论(0)  编辑 收藏 引用 所属分类: C

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理