QQ登录

只需要一步,快速开始

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

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

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

7

主题

1

听众

43

积分

升级  40%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2004-6-3 12:13 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<>
5 w5 k& w- e! A( Y#include &lt;malloc.h&gt;
3 P5 H) r7 u) G  p- W#include&lt;stdio.h&gt;
1 ^8 Z* a4 E' @- @2 B3 S#define N 113 f6 H8 c) V: p) y4 [
/*用监视哨查找*/
3 x) ~! [+ h2 ~3 @, Nint search(int array[],int n,int k)7 V7 L" w- f, o2 k# ^: a5 p' r$ ~
{int i;9 D7 S! V" T' @; W
i=n-1;
. |. ^9 [) q: a# c2 barray[0]=k;* [/ I/ p6 H: U  E  l  S
while(array!=k) i--;
  C  C$ V# R# v+ ?# }return(i);" i; l2 p% V( Y- P( Z4 ]* ]
}
+ x) l6 W- ]/ ^7 G& k/*折半查找法*/0 }+ T2 W# n; B% T" [4 z; M1 u
int halfsearch(int array[],int n,int k)
; G( t7 p; b: D9 m+ o2 a/ i; W{int i,j,mid;% v- p& m$ q7 L5 T* [
i=1;j=n;
+ q, y) v$ M6 a/ c+ @while(i&lt;=j)
8 g0 C- f( U$ H+ a0 p1 w{mid=(i+j)/2;
3 ^' W. e) t1 Q9 C% R; c( w if(k==array[mid]) return(mid);
- T" [7 S! K" f% |* Z, h6 C- Yelse if(k&lt;array[mid]) j=mid-1;
3 M& g$ e% r9 p- O# t2 d      else i=mid+1;* f4 Z( @: k# @( V/ n/ k5 r# e
}
# Y/ ?7 p) S& r* j. H0 N, Sreturn(0);
: D- t' l* Q5 u% p# e' U}</P>6 ^) T- x: y5 J' W6 @
<>/*冒泡排序法*/; N3 R0 t  Q" Z( K) q
void mpsort(int array[]). ]0 I$ n# ^9 b( y+ Z( K
{int i,j,a;
& X2 o, P, D, ^a=0;# h: h4 o4 L. v+ [& d
for(i=1;i&lt;N;i++)# ]7 l1 V: D5 p
  for(j=i+1;j&lt;N;j++)9 P0 W! z3 T+ j! d- [/ j
   if(array&gt;array[j]). U  M7 `' t  N- V7 Y
     {a=array;' u6 @% S6 I" K7 e5 K
     array=array[j];" e( S1 [# {8 o- V2 O6 a, y
     array[j]=a;}& j+ E2 v- C# X
}# k3 ?8 d# _/ L; \
/*直接插入排序*/" }! [3 _, W( U2 Z6 t* T
void insertsort(int array[])
/ i; s! Z4 \! v{int i,j;: {- v" W, X/ Q. e1 p
for(i=2;i&lt;N;i++)! s4 W+ @1 m( R1 v8 J
{array[0]=array;
/ z3 H* ?& s6 V0 bj=i-1;4 |2 b2 k7 H* }9 V4 _  O/ g0 d
while(array[0]&lt;array[j])
0 {) }3 Z8 `4 G {array[j+1]=array[j--];
4 A5 d! h8 g* B array[j+1]=array[0];* n3 ^; O; `& S+ d. O8 v, m( i9 J
}
0 H( r- I/ V+ v$ S/ i  C; e" y}' f7 G+ v0 Q  W9 ~/ C
}
/ ?0 _  t5 n3 x0 }- @, X/*建立*/# G+ Q! ?0 Q4 n) E) w4 T+ P: a8 j
void creat(int array[])$ {' z. Y3 e9 F4 R0 d% d6 |
{int i;
4 y0 F" e7 O+ {; H+ I printf("enter the array:\n");
0 K- a( H5 o# A. u3 J  o for(i=1;i&lt;N;i++)% a5 {7 q4 x7 o  ]( b. L
scanf("%d",&amp;array);
! K) [% Z- z% a9 h}</P>% d9 z2 ^, R7 Y" Z0 D
<>/*显示*/5 T4 y# @& E( K. G0 O2 E
void print(int array[])
' b& p6 @; G7 h& W  {int i;: _8 Z! T* |/ Q7 m
   printf("The numbers after sort is:\n");
* W; n% r' f: b   for(i=1;i&lt;N;i++)
- u& L4 x! e0 Z   printf("%d ",array);
: P6 A! [4 }, b" q% G   printf("\n");( H- ~1 c& w' L
  }</P>
+ f' s, n5 R: @- k; Z1 |( }4 {  m% P<>+ o8 V& C7 o3 G3 L
main(): I. D9 J) Q4 Y
{int a[11],i,x,chang;
! Q. g8 H2 h, ~7 I1 n6 f# Z- ` /*printf("enter the array\n");
2 M, r2 B2 o& a! w- n* h/ Y$ ` for(i=1;i&lt;11;i++)2 t; i; G+ J- t( q7 I  p
scanf("%d",&amp;a);*/</P>" m- z, o: \1 _# _, B: c. m
<>aga:
3 |( y( c5 |( M' k# N5 `3 I 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");
& Q& l* t% q0 z" E) @' J scanf("%d",&amp;chang);( L6 l! D9 [3 T
switch (chang)
/ V2 f5 ]5 n( d9 n- P* O {case 1:
) f* P& p$ |4 g1 ]: Z/ |       {creat(a);( Q$ V" g2 Q+ o# r# |( I
printf("lease enter the search number:\n");+ e; w  Z8 J& A
scanf("%d",&amp;x);
6 X) W6 Q* j* b8 d$ C printf("The number station is:%d\n",search(a,N,x));0 B# [7 y, Y, V" S. ~* n
goto aga;: Q8 E* S' ?* B2 `
}
" @2 i( ~" w. x7 v  case 2:
4 j+ ?$ r% G% N9 _( }6 c& Q     { creat(a);
8 I! y, ~% w5 M+ }       insertsort(a);, _) Z( q$ k# N- n6 m
       print(a);
0 G" y; ?9 W' w2 v       printf("lease int the search number:\n");
, u: N1 \: l# C  c- T       scanf("%d",&amp;x);6 x/ M. Y: `$ J
       printf("The number station is:%d\n",halfsearch(a,N,x));
4 R3 i1 J* n/ J9 H       goto aga;6 G/ t( d3 M. Q* s! i
      }
1 E# C& ?$ p' J' I7 x0 ]   case 3:3 d0 {# A8 }6 i
     {creat(a);
+ a0 R0 `! Z# o& D& A      insertsort(a);
+ n; a, a. o8 o* Z" Z) v      print(a);
, H0 |0 |7 Y' j9 o      goto aga;
/ z# i( d- @7 @+ g/ ~" ~; Q6 d     }</P>
) {0 E; O3 \' b  }# o: l<>   case 4:
* \5 Z  s+ z/ y; z9 X* z4 @     {creat(a);+ \! d0 u0 b  `( O
      mpsort(a);
. m+ X# w; S2 Y6 q; _. `" O      print(a);" [  K  k1 P$ J% f
      goto aga;
" `: M, i1 Z2 ^     }</P>9 c! V& i) u- a/ G/ U( _2 S
<>   case 5:{ printf("exit!\n");break;}
1 d/ d% B& X$ ?; c  Z0 g   default:{printf("Error!\n"); goto aga;}& I% z* v+ P* y! c4 c2 Q
}
' ?  p: y, S2 S: H! M}
, U- d, L1 H# _# I) R
, e1 p5 a. V% ?$ b7 W 5 w; L" H: L& ~) `9 h0 z7 X
</P>2 c; x( o& p$ g; h5 x
[此贴子已经被作者于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-19 14:30 , Processed in 1.163187 second(s), 102 queries .

    回顶部