数学建模社区-数学中国

标题: 几种常用的查找和排序算法 [打印本页]

作者: matrix_spaceman    时间: 2004-6-3 12:13
标题: 几种常用的查找和排序算法
<>  Z, M4 W: f1 }2 f* h9 P
#include &lt;malloc.h&gt;
' i7 ^3 H6 d1 s( k) {" m3 |#include&lt;stdio.h&gt;: X; ?( k) `/ U9 F& w% d/ ~
#define N 11
9 \+ y: Z; {2 b! N/*用监视哨查找*/" S' d* a) Q* s2 k
int search(int array[],int n,int k)
* k  T/ z6 |" o{int i;
9 V2 C/ `+ b8 _% g, n- K6 j3 K2 g i=n-1;' ~  t) B% C0 l* X! d: d
array[0]=k;; d; `3 U! P! n$ N
while(array!=k) i--;
* N% I; B4 I+ Y8 c* rreturn(i);6 k2 F# u8 C/ l2 D. P1 f
}  z2 S8 P# b% M6 g
/*折半查找法*/* P- D1 \6 i0 `! s
int halfsearch(int array[],int n,int k)3 d3 `2 `! V7 u( {
{int i,j,mid;0 Z  o  \1 w; l7 B% d
i=1;j=n;
# w7 y+ E) ^2 Gwhile(i&lt;=j)
7 N( T* V$ I+ N' n. w{mid=(i+j)/2;
) @* e" Z0 \1 c# r if(k==array[mid]) return(mid);
- \8 I; z0 p* e- welse if(k&lt;array[mid]) j=mid-1;4 Y& _' R( |4 B1 @" @# y# _
      else i=mid+1;  o3 [' y6 ]: I9 S
}
0 ?& b8 {( E, N& v0 _0 R& U  q0 Breturn(0);9 v/ W$ C% }* X& `% E# M/ P
}</P>; S3 n- @1 m7 j/ ]
<>/*冒泡排序法*/
4 K8 h# J- r+ q( wvoid mpsort(int array[])
& g9 H2 J$ o2 z) J{int i,j,a;
& i1 q. f0 v4 I0 }; e# [a=0;' e: B, N# f% W. p3 q: h. ~! S# X
for(i=1;i&lt;N;i++)
1 }  H9 P& }9 ~1 v' h5 ^  for(j=i+1;j&lt;N;j++)
! ?* g9 O0 q/ @2 S' q; D/ z8 L/ g& A* ?   if(array&gt;array[j])
" F6 A8 p9 K8 f: n5 N     {a=array;4 j6 O9 P& @% Y4 F! X: ^" g& F
     array=array[j];
" a) ?5 }/ F3 `$ U3 g     array[j]=a;}
* U6 I6 @  @* W9 ~, A1 z" j}( b0 \+ y8 B& W5 E! v
/*直接插入排序*/9 I  V( I7 w( W8 U4 {
void insertsort(int array[])4 s' H& @" q& y& b  X: g6 w+ T
{int i,j;
: p: X# l3 G3 G9 \ for(i=2;i&lt;N;i++)
2 ]" v& b1 J0 n; B2 m, j, n( s {array[0]=array;( a  h& I* ^+ l0 q& s5 j
j=i-1;+ I/ j% N" ?% S  y
while(array[0]&lt;array[j])
$ j9 D) G" T0 i5 U& w9 u1 O {array[j+1]=array[j--];( ?4 w% H$ p& ?* F
array[j+1]=array[0];: ?& c# r, O0 @# i, t2 g, e7 t- R! \- f
}
! a% c8 s1 J! u1 O* E}
9 _# B" ?6 }  Y  g}* H0 b) k/ w! I3 @  I
/*建立*/
' ?6 I+ ^2 t9 {& D. k3 r) o, cvoid creat(int array[])
+ @# N8 [8 m9 E5 m7 {{int i;- o2 A# l# h* [8 z6 N& J3 e1 S/ ^8 [
printf("enter the array:\n");$ w; N; c% Y' Z; b
for(i=1;i&lt;N;i++)
4 K* \0 r: m) o scanf("%d",&amp;array);
0 e8 j8 g) l( [" C- \% C( G- a}</P># Z- D3 j* N% T% i* y1 W9 b# a
<>/*显示*/
- |! f+ B4 u6 T6 y6 f1 k; ?void print(int array[])
' ^" h8 n6 \' b& b" t/ t( r( F( b  {int i;
3 P" R$ s5 {  W1 h9 ~% d   printf("The numbers after sort is:\n");
$ c" R5 j, {9 y- W' s& g   for(i=1;i&lt;N;i++)
1 c! i( x% P9 w! E  H6 ?: ^9 |0 Q" \   printf("%d ",array);& B+ p. c8 M# t
   printf("\n");) ?- a9 l  h" A% ~, Y' _
  }</P>
6 T8 a+ R3 ?. h% |- w<>$ o, {; m, J  n2 v4 r1 t
main()
$ \4 g0 s4 ?% O9 y: P$ g( ?' N{int a[11],i,x,chang;3 h1 F  b, e9 ~( b4 S
/*printf("enter the array\n");
* @  _4 d  C' t$ C5 n1 N. n  e2 y for(i=1;i&lt;11;i++)4 D0 {" l( l' A
scanf("%d",&amp;a);*/</P>8 g% p/ W  B) J" A
<>aga:
8 D* B* i0 O: ^  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");
1 I4 b$ G4 K" c+ R, z5 F5 X scanf("%d",&amp;chang);
* l/ U$ W- V5 i8 ?/ \ switch (chang)
) ^1 \( K( V2 x( E! S {case 1:
4 R' P1 }8 N2 X( E- ]5 x. I       {creat(a);4 ?0 G9 J  ~( }$ v2 M3 Q5 r/ n
printf("lease enter the search number:\n");+ {1 m9 u& i, \" \
scanf("%d",&amp;x);
; s4 ?5 B5 h$ y8 @, [% i0 V/ h; P printf("The number station is:%d\n",search(a,N,x));
2 _' ], ^. R( q2 l; Z  c& L goto aga;
& k5 g9 E, g; j2 a }) u2 t) x' ]' x' g2 C
  case 2:
# g3 ~) z3 K/ g3 X     { creat(a);6 T) k6 ]/ P4 ^: W! a* O3 \
       insertsort(a);5 t( R7 c! M7 ?3 s) t0 m
       print(a);
0 S# g$ v) q- B) x# O7 K       printf("lease int the search number:\n");. E: a/ w% R8 z+ W' r, `& n; ]
       scanf("%d",&amp;x);" Z" H8 ]+ a5 U# e
       printf("The number station is:%d\n",halfsearch(a,N,x));0 J9 K9 }0 C7 ]  Z2 ~9 g  a
       goto aga;
) }- d9 l$ L" y: {; y$ j; L      }2 v# e5 H7 c/ H
   case 3:" H  L' Y" M: T, y& ^" m/ l
     {creat(a);
' S: l) z. m; }& i) W% s4 k      insertsort(a);, H9 N& t" ]3 Q& j7 z
      print(a);
. [% M1 X) e% {# O# s8 B      goto aga;1 X$ ?; {# P- |8 D
     }</P>5 ?% j" d/ @& u# S, i9 [; E
<>   case 4:5 U+ }8 E) h3 Q) u
     {creat(a);1 A8 V5 \8 `* B1 T0 C
      mpsort(a);0 E) g* u2 X6 n4 c, b
      print(a);
  O9 u2 D4 _8 v# @. t$ i      goto aga;
+ y3 b5 f5 R8 l+ g     }</P># c  l3 {! G+ I0 ~
<>   case 5:{ printf("exit!\n");break;}7 w2 Q% ]7 X$ @" h- W
   default:{printf("Error!\n"); goto aga;}( D  k) q4 }( V
}
8 j) T- Q1 E0 \/ V}
$ t) t; V; w2 Y6 z# W
- q3 g2 C- ~  w5 a3 O6 l
) C8 q$ z7 W! j1 x! i: }/ [& L</P>
8 O- q7 X1 h9 v2 m& h( e& Y) g  Q
[此贴子已经被作者于2004-6-3 12:16:43编辑过]

作者: ilikenba    时间: 2004-6-3 12:43
<>不错!</P>
作者: xpwei    时间: 2004-6-25 23:46
有没有奇偶校验排序的算法!!
作者: Angel52416    时间: 2005-8-25 15:12
<>不错!顶一下!!!</P>
作者: ltlt00111    时间: 2007-9-2 15:17
hao&nbsp;
作者: jerrychan    时间: 2010-2-10 19:43
顶一个,很好,谢谢分享,加油,大家一起努力,
作者: 为你奋斗    时间: 2010-4-15 10:27
不错,还是不错~整理成文件可下载就更好了
作者: pingshaluoyan    时间: 2011-9-22 10:47
看起来蛮熟悉的
作者: 廷植斌_972    时间: 2011-10-31 02:31
呵呵,看大家评论如何
作者: xiaoqiang00    时间: 2011-11-28 18:00
看看、、、
作者: www.5dy5.com    时间: 2011-12-6 11:23
看了就留个记念
作者: GraBUAA    时间: 2012-4-2 16:35
帮顶一下~~~
作者: gopsjsnz    时间: 2012-4-12 13:52
标题: 大家好我是新来的请多多关照!
大家好我是新来的请多多关照!
作者: 天气不错rsq    时间: 2012-4-18 13:01
很好,谢谢你啊,辛苦了~~
作者: qaz11sc0616    时间: 2012-5-13 21:03
哈 谢谢啦 !谢谢分享
作者: 凝香夜雪    时间: 2012-7-30 10:47
这是C吧  O(∩_∩)O~




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5