数学建模社区-数学中国

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

作者: matrix_spaceman    时间: 2004-6-3 12:13
标题: 几种常用的查找和排序算法
<>8 u2 i! l, c, L  Q0 ?
#include &lt;malloc.h&gt;+ R+ f9 z2 u& o- e
#include&lt;stdio.h&gt;
" X+ d3 X/ M3 W0 f#define N 117 C3 M. D; i3 _( D8 g' P/ ^
/*用监视哨查找*/7 O" ~; F* d5 A: a
int search(int array[],int n,int k)
3 g: A1 S- y7 S% N" f' `' K8 S{int i;+ Z5 Q+ c9 O) j( S% T4 C. |2 t4 o
i=n-1;
. F  U7 a- H3 g" I- K- ^7 t* \array[0]=k;
& F, @/ X; R' owhile(array!=k) i--;
: H' L+ [6 j) L' A' m% X8 t7 lreturn(i);6 j- J. n1 y7 Z
}
1 v* X  A% p) f) A) ^; y- H4 x/*折半查找法*/
/ A' q" l1 R5 M) {. u8 tint halfsearch(int array[],int n,int k)
9 F- e* @( Q) H# {{int i,j,mid;8 j: Y7 y% V: f+ x( B
i=1;j=n;
: p1 x& U8 l. l+ vwhile(i&lt;=j): ^2 T% T) ~9 |* D$ X
{mid=(i+j)/2;
8 L0 p- u' T. f" _+ Q  n3 ^ if(k==array[mid]) return(mid);
# X* U/ m, O( c" Pelse if(k&lt;array[mid]) j=mid-1;
- _$ s. b, I" V: J5 T      else i=mid+1;
& H0 b; |4 S1 e* W3 B8 r9 }5 ?& F/ }$ f}( `; r) M! m( f6 y
return(0);
, D- T# b& ^1 N* _- {0 V# E}</P>% W( Y: {7 @$ U. R- t, ?; X
<>/*冒泡排序法*/0 P! Y9 s8 I* U8 h( @
void mpsort(int array[])
+ @3 r9 B, K( A{int i,j,a;" G8 X/ g3 \5 r
a=0;1 j( X+ }: T, ^0 F
for(i=1;i&lt;N;i++)
- C$ Y9 S5 z  ]- x# V( w& m  for(j=i+1;j&lt;N;j++)
" Z. I  F8 ^. k# R3 R  i4 B! C   if(array&gt;array[j])
/ U9 \6 I" P1 o     {a=array;
3 K. E& |3 ^. S8 L; Y  p# Z/ u     array=array[j];
1 g1 [' N( k) I8 R% c- o  C     array[j]=a;}
: y! L5 x: `- y$ {}
. F' [% g& [# X7 s/*直接插入排序*/
8 r! S2 G# A% W7 c5 T$ ?void insertsort(int array[])
$ Z  ~  T& q8 z/ @' g, e{int i,j;
+ @, {" m" o5 A' ]% t% ` for(i=2;i&lt;N;i++)3 u% L. b6 y( x' u; U$ k4 x9 m# h
{array[0]=array;! }  `& f. T+ x1 V
j=i-1;4 n. Y' u* m! U# G" H1 S
while(array[0]&lt;array[j])
8 o. Q) P0 l. E- U. a) \- q {array[j+1]=array[j--];' ~, \& M* `  n( I) q
array[j+1]=array[0];
2 B" K: {; E) m2 U$ }/ Y1 @}
( U2 M4 b$ e) L: U# f% m+ a}6 C6 X# d5 U0 ^3 x# A
}3 \7 I* v: z8 @* t' ^+ X
/*建立*/) ?1 v8 h( C1 ^; p) ]8 ?( k4 k
void creat(int array[])4 O$ k. ]' I; f' |2 E2 u
{int i;+ R. D2 C* X( W! w
printf("enter the array:\n");
$ b, w$ t( z1 |  L* O2 {  I for(i=1;i&lt;N;i++)
' A0 r5 H( H) f scanf("%d",&amp;array);
  v- \2 D; u$ T  H}</P>
! ?- u8 x& t! J- x7 u' z<>/*显示*/* _' x/ T% @8 M, r& E9 \2 `
void print(int array[])
5 J7 i+ ^) \; c, E  {int i;
1 A7 n  T- Y2 E   printf("The numbers after sort is:\n");
6 ]2 w5 j# l3 e. V+ U   for(i=1;i&lt;N;i++)! e* n) a# Z; B$ N" `6 ]& O1 Y
   printf("%d ",array);7 u% I' _: s- z/ z9 ^5 y+ u1 h
   printf("\n");& X5 S* m' i. I& F; E
  }</P>
0 @& ]& N1 G% V' H" r1 ^7 \7 {) Z<>
$ O" Q) V( b3 W+ vmain()* r; I7 `# l4 S. R! w% Q) z
{int a[11],i,x,chang;/ s7 o6 c: x9 H6 j5 x
/*printf("enter the array\n");
. |: @4 D  m% r for(i=1;i&lt;11;i++)$ B0 X0 F* L! ]) f; T
scanf("%d",&amp;a);*/</P>
% U; L5 O$ v  U* D$ Q2 l<>aga:
+ d: `% i. t) N& O7 E: j 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");) Y' n! T3 \* T8 n( H/ L* K8 ]: {1 B
scanf("%d",&amp;chang);
9 M+ H, ~* F- k" @( ?1 ^ switch (chang)
  @2 R6 r, k# x- D+ ]# J* o {case 1:
9 R) Y2 ]7 X7 H  ~1 Y5 y+ v       {creat(a);7 Z! c  v. ~: r# q; u# v% T
printf("lease enter the search number:\n");
) [. p/ L6 P2 l4 T* B( m scanf("%d",&amp;x);" C: m1 a- e  E; Z) K0 W
printf("The number station is:%d\n",search(a,N,x));' p1 W" N  D" U. T4 o3 w
goto aga;& F9 ?5 q& Y. H1 O( |: t
}4 @9 i; A2 y2 N, B
  case 2:
  m: p9 G' @$ t7 }9 G1 [* ?+ Y1 g2 v     { creat(a);
5 M( S" y' H( V/ n       insertsort(a);
/ V" f) f1 \8 m) U       print(a);
" O* N# i' X8 f% E* E: p8 {       printf("lease int the search number:\n");
4 h  i4 g) o9 z4 C* M' N       scanf("%d",&amp;x);
$ @- u; ?! d5 |       printf("The number station is:%d\n",halfsearch(a,N,x));! P; v& @% }9 q2 n
       goto aga;% O  y8 ~6 l" [+ |5 w; v3 r2 e
      }8 W" c0 G, @: C4 h
   case 3:- @) c" t, v$ c0 c* W! U  F! N2 U
     {creat(a);
& L) o: l$ ~2 r4 u  x; _1 \      insertsort(a);
, c) \$ A) u, j5 N) V      print(a);  o6 n( u; v0 v" V/ h
      goto aga;  V1 C- v  x( A$ g  I0 `3 P
     }</P>/ C" a, Q3 A- c
<>   case 4:5 M6 X7 O5 K- |9 Z
     {creat(a);
) _" w; h- Q1 D% C7 _0 x      mpsort(a);& A4 G8 H% ^: S) z* c, H2 L
      print(a);
( f$ J' c* y) z- J9 Z4 Y4 y      goto aga;0 s9 _: p+ B( s1 Z) O4 ?' S
     }</P>0 d7 L6 p, B: i- ^
<>   case 5:{ printf("exit!\n");break;}
) j* z: H" f0 [4 X: `, h" d% u   default:{printf("Error!\n"); goto aga;}2 \6 l& ]& E* w' j! o& v
}4 B( Y3 [" u4 _0 N
}. ]4 P1 ^7 F7 N7 S. `! A1 @

* n* y( E* l' V; M  h/ n7 p7 P) U" w
! [* o  @  O9 R; G5 x" `+ {! y6 u) I</P>
* u: R. @( F: K! g) h: @
[此贴子已经被作者于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