QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 8042|回复: 15
打印 上一主题 下一主题

几种常用的查找和排序算法

[复制链接]
字体大小: 正常 放大

7

主题

1

听众

43

积分

升级  40%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2004-6-3 12:13 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<>( s2 s6 x/ A: d! K, W6 Z
#include &lt;malloc.h&gt;
9 O$ d' ^( J. ]5 F#include&lt;stdio.h&gt;$ z( h% B8 a' Y# p3 {2 Y
#define N 11
. T) m! m2 Q( N' N/*用监视哨查找*/- _; O; n& t, w; p' H2 S  L" [
int search(int array[],int n,int k)7 z# ]# l% q# ]) P0 C( k9 j/ k# R+ _0 P
{int i;2 i# l/ W2 B. p
i=n-1;- s7 {6 s6 v) Z9 K  H
array[0]=k;
( T5 K3 g+ z2 f$ ~, Y( A4 gwhile(array!=k) i--;- O  P& r6 B+ n7 g$ }
return(i);1 f9 y6 m6 c' J. `( X" ]/ U3 I
}& G4 ]" X# l0 [0 ~" j% d- |
/*折半查找法*/
1 C4 V: y) f+ O7 j; Tint halfsearch(int array[],int n,int k)
$ M; D: [% E# f' J) y8 I{int i,j,mid;
  w3 x- Y/ F' { i=1;j=n;
# l% w" H" Z) @; y  A' hwhile(i&lt;=j)
5 g- H4 h( Q! Q1 h3 G% j5 C! o0 G' R{mid=(i+j)/2;
7 J- q$ N5 ]( P' C if(k==array[mid]) return(mid);
. D6 g% C  m. U6 W0 S3 ]else if(k&lt;array[mid]) j=mid-1;
+ {" D/ L0 A8 C3 L, N# O& A      else i=mid+1;
* ~) M' B' X6 a6 D7 F- _}
1 t; |0 E& V2 r) f, Greturn(0);+ q+ m+ c% G$ h% F
}</P>5 [+ I, @# a2 j/ @- {8 ?% g& K
<>/*冒泡排序法*/- v, j$ F1 u5 S
void mpsort(int array[])- Z, F4 o# ]$ Z! F( ]) ~7 k
{int i,j,a;3 T! j6 }9 f9 u$ ~; N* u
a=0;7 p; q. J& Q4 P8 Z( w1 [' X
for(i=1;i&lt;N;i++)1 m( y8 O8 n# ?0 o5 o  R
  for(j=i+1;j&lt;N;j++)6 w$ W1 u5 T3 w3 Y2 E
   if(array&gt;array[j])
+ v9 L- l$ N7 I6 E& q3 I8 F     {a=array;. a! N5 C0 p6 U  ^
     array=array[j];9 E* m, ~+ G. ]) U8 H/ B4 B
     array[j]=a;}
8 x% q# ?# m" w, S' e}/ i! \- z, u. |  I
/*直接插入排序*/' a6 h- @# j, n( a: _- D
void insertsort(int array[])
- u" }6 ~! ]: Q+ Z/ U8 Y  \2 @8 A/ v{int i,j;* W! ?9 G/ Q* b4 |+ e
for(i=2;i&lt;N;i++)
$ V% }$ J" s# ~6 S' `4 M9 a {array[0]=array;- m5 U, H1 {- F
j=i-1;+ ~8 l- c! {/ ?
while(array[0]&lt;array[j])
3 @- q, m& {1 t- b1 L. I% u( L0 W {array[j+1]=array[j--];
9 X- [- X4 b" O array[j+1]=array[0];
" a. q% v) j+ e' i$ J}
$ K( F+ x3 m) [1 ^}
, |! u1 e" n4 h) O}$ }* y: s+ v4 E2 L* v: ^
/*建立*/& \) E1 }6 t  E! s. `$ B0 j! N
void creat(int array[]). f$ D+ t4 |% U7 Y3 W+ `+ o
{int i;# W! _' h" `2 P* R7 R
printf("enter the array:\n");
* @) @1 }* t% [2 b  x for(i=1;i&lt;N;i++)
/ F% ~; G- B. _# Y2 d  d! C scanf("%d",&amp;array);1 W  v( K- y0 v: t. v+ n
}</P>9 @' N* O* ]0 a0 v& X
<>/*显示*/7 ?2 E7 q% C+ `3 M# M/ ]0 J
void print(int array[])
; n+ u( q% X: y! v" j  {int i;. B/ j. y8 h3 S. e5 {2 L
   printf("The numbers after sort is:\n");
/ @+ x8 O3 [3 u) }/ Z: H) O: a   for(i=1;i&lt;N;i++)* y$ Z1 c6 f4 J- Z8 G
   printf("%d ",array);1 K8 i3 f' V5 e
   printf("\n");) m. W2 n0 k, v( E, M- E9 c) p$ P
  }</P>
8 [5 g5 c. H5 u" @; q9 }<>+ Y$ q8 l; G( j0 s. r
main()
! E3 a  @* O& G- u. Q{int a[11],i,x,chang;
# h( R7 D; v& }7 ~/ W /*printf("enter the array\n");( U0 m% [5 x0 Q# T& \7 d0 y7 o4 V
for(i=1;i&lt;11;i++)4 d1 N( i! z- I3 V$ @6 F: C
scanf("%d",&amp;a);*/</P>/ e2 x4 q2 V9 H
<>aga:4 V- o9 A: \+ I& ~, {+ p6 o
printf("\nchang:1: use watching method finding\n      2:use half method finding\n      3: use directness intsert method sort\n      4:use bubble up method sort\n      5:exit\n");! i4 |/ E7 P$ h4 Q
scanf("%d",&amp;chang);1 F& ?: g8 J0 E& }- p: W
switch (chang)6 D' d( y5 S. `  S3 E
{case 1:
) D+ l8 J; A! \0 V" q$ h" f       {creat(a);
" R9 j" W' Q; I4 v: z: i% Y5 P printf("lease enter the search number:\n");
3 K  ^3 ]) g! |& n scanf("%d",&amp;x);
4 m4 R* @3 G  Y; B7 N+ a3 b printf("The number station is:%d\n",search(a,N,x));+ `1 U- u, b% P' \
goto aga;
1 R1 v( X9 X4 }# g. [5 D2 T }
0 ~0 V1 i$ `' x4 r  case 2:
# R1 [! w; z5 S: d* T6 e. `' Z     { creat(a);% i" h1 u2 d  t9 L
       insertsort(a);7 t( t$ V0 v/ `/ F+ h9 W8 O
       print(a);
4 \6 g! {# Z3 N3 j       printf("lease int the search number:\n");
& C: V9 {# C. d) ?       scanf("%d",&amp;x);
% Y5 u0 q% l+ E* C- c6 e6 [' D: p       printf("The number station is:%d\n",halfsearch(a,N,x));
& I$ u& [( T% H" t9 p       goto aga;6 w; S, [, H5 d9 Y: \0 O
      }7 B, {( n1 m0 }  ]$ o
   case 3:
' b2 D5 x2 I/ K3 G# l     {creat(a);
6 ~" l7 b0 a7 q9 M" m. U" O0 j      insertsort(a);
- r* I- Z9 G4 K+ K4 u! M      print(a);
: s' _  N& o0 L2 r# ~; e, Z0 t3 E      goto aga;
9 h7 F: |. t1 T6 ~+ S: j. j- q     }</P>" A* M' j5 G$ M, i$ D4 Z
<>   case 4:5 B& v( E; R3 L) s4 Z
     {creat(a);
6 [& v9 |! s/ f7 f      mpsort(a);
: X" ^# w- G) E' p- s% z+ Y      print(a);
, h- S: M6 Q+ J( O      goto aga;
% J( k1 D6 C4 c7 `     }</P>; W, Z7 \2 H5 G
<>   case 5:{ printf("exit!\n");break;}; T% E* ~. }7 p4 q5 R) Y
   default:{printf("Error!\n"); goto aga;}
2 M* R% T; }! h/ H/ K) q$ T$ w}
6 M  v! C0 n% _0 S1 M2 e: I# ^}1 r7 q0 Y7 G7 }2 a; D
! J7 ?: ?$ m* h6 q/ v
- g* f6 y/ p. }* L+ }- P& l
</P>
9 T8 z0 o% y6 v* F8 W/ v# a9 s1 _
[此贴子已经被作者于2004-6-3 12:16:43编辑过]
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持1 反对反对0 微信微信
ilikenba 实名认证       

1万

主题

49

听众

2万

积分

  • TA的每日心情
    奋斗
    2024-6-23 05:14
  • 签到天数: 1043 天

    [LV.10]以坛为家III

    社区QQ达人 新人进步奖 优秀斑竹奖 发帖功臣

    群组万里江山

    群组sas讨论小组

    群组长盛证券理财有限公司

    群组C 语言讨论组

    群组Matlab讨论组

    回复

    使用道具 举报

    xpwei        

    1

    主题

    0

    听众

    20

    积分

    升级  15.79%

    该用户从未签到

    新人进步奖

    回复

    使用道具 举报

    1

    主题

    2

    听众

    24

    积分

    升级  20%

    该用户从未签到

    新人进步奖

    回复

    使用道具 举报

    ltlt00111        

    0

    主题

    3

    听众

    21

    积分

    升级  16.84%

    该用户从未签到

    新人进步奖

    回复

    使用道具 举报

    jerrychan 实名认证       

    0

    主题

    2

    听众

    13

    积分

    升级  8.42%

    该用户从未签到

    自我介绍
    我是济南大学数学系的jerrychan,希望能够成为数学天才
    回复

    使用道具 举报

    36

    主题

    7

    听众

    2050

    积分

  • TA的每日心情

    2017-3-4 20:24
  • 签到天数: 31 天

    [LV.5]常住居民I

    社区QQ达人 邮箱绑定达人 新人进步奖 最具活力勋章 发帖功臣

    群组数学建模

    群组数学趣味、游戏、IQ等

    群组LINGO

    群组Latex研学群

    群组C 语言讨论组

    回复

    使用道具 举报

    7

    主题

    4

    听众

    58

    积分

    升级  55.79%

  • TA的每日心情

    2011-9-26 08:51
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    回复

    使用道具 举报

    0

    主题

    4

    听众

    50

    积分

    升级  47.37%

    该用户从未签到

    回复

    使用道具 举报

    1

    主题

    3

    听众

    300

    积分

    升级  0%

  • TA的每日心情
    慵懒
    2011-11-28 17:57
  • 签到天数: 86 天

    [LV.6]常住居民II

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-7-20 00:52 , Processed in 1.530193 second(s), 100 queries .

    回顶部