数学建模社区-数学中国

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

作者: matrix_spaceman    时间: 2004-6-3 12:13
标题: 几种常用的查找和排序算法
<>
4 g5 n1 e5 @; L- W- R1 z#include &lt;malloc.h&gt;( Q4 d4 j' \& R- Z
#include&lt;stdio.h&gt;
: c% [0 ^' v6 K  Y#define N 11' p9 V! z( c+ [. i
/*用监视哨查找*/+ b: r  T7 N; Y7 V8 z0 K* f
int search(int array[],int n,int k)
* G- ~% T' n3 z  G# z! t{int i;
4 a: v+ V$ l. I4 x0 M, }' f i=n-1;% @6 \- h9 H2 _2 a! }2 z5 L
array[0]=k;
# V3 t3 B5 h) V! w0 Gwhile(array!=k) i--;
$ G1 Y& c8 h, l' l0 V& x4 m- }' _5 Freturn(i);
0 p" c; `5 @9 \}% M" ~  I5 m$ j+ W" S3 K( T
/*折半查找法*/
2 n; Z5 _  a& Gint halfsearch(int array[],int n,int k)
7 \, M; @0 g; l. a2 L/ ]{int i,j,mid;3 s& O7 S9 w' H8 c
i=1;j=n;6 s0 x8 g$ e; w7 k0 ?/ x
while(i&lt;=j)- ~8 w6 c& ~& x/ A7 u
{mid=(i+j)/2;# a- S; ?: o. D2 X( n, W* h
if(k==array[mid]) return(mid);) ]  @- W5 T3 N# U- ?* W7 b* {
else if(k&lt;array[mid]) j=mid-1;
, K& N, _- W4 D/ d$ i      else i=mid+1;  ^! Q) X3 z0 ^; u6 W4 ?
}+ x0 P+ |2 Q, R+ k6 [2 J
return(0);
+ ~/ u7 M8 k" \( O7 L+ d- I2 ?}</P>9 i) ~/ Z1 ?' s; m  Y
<>/*冒泡排序法*/
" z- W  S8 h5 A% m0 D, Fvoid mpsort(int array[])9 ^* m9 Y8 R! P5 k$ ]
{int i,j,a;9 E" R! A5 r9 k0 T" h$ |3 t
a=0;! B7 X- E5 p: I. B
for(i=1;i&lt;N;i++)! r: P* s9 @( N, p
  for(j=i+1;j&lt;N;j++)1 ]' _- g% @3 P& u. e
   if(array&gt;array[j])  Q+ h: f! C2 K. G- C( b
     {a=array;
, w* T2 L' t& y$ x/ q" H1 n     array=array[j];
6 `: T. m7 S4 C     array[j]=a;}/ N5 R! |! L: M% X, m2 q: Y8 _3 y
}
0 L: Z. D$ U' N/*直接插入排序*/
$ q6 V5 L# S+ F; f3 x3 @void insertsort(int array[])
3 K4 l: F, x" P, ?8 W{int i,j;% I% X: Q, {& `! p
for(i=2;i&lt;N;i++)4 v4 b5 Z# ^4 v0 B4 P( v3 X
{array[0]=array;/ z3 \+ Y6 W0 E9 Y+ M3 l
j=i-1;
% q% ?5 d+ ~% N* J5 V# _- g9 A' I2 m+ B5 Fwhile(array[0]&lt;array[j])3 S/ f6 w: q5 J0 W5 }* V
{array[j+1]=array[j--];# n! O; D8 {, N: t
array[j+1]=array[0];. _/ ]9 m% b' m, g: k
}
: u% E  R& n0 x( V. g/ t8 ?0 r}5 o4 p) t* y* m/ g! Z5 @: A, G
}7 [5 `5 b: R0 m$ ^' ?% X3 s- G
/*建立*/
  I  J' B$ D! O. o" o! rvoid creat(int array[])5 V9 q1 I9 Z# p( @6 F: a4 S
{int i;
  U, K6 F7 @! U2 L) y& y; w printf("enter the array:\n");% V! Y9 Y9 [0 n
for(i=1;i&lt;N;i++)' ]  q1 O2 V; S( S( W) }& u
scanf("%d",&amp;array);: s* x5 c* ]8 _  C. d
}</P>* r% j& y3 `! f# B3 g  n* z3 Z! t
<>/*显示*/( P5 y6 l7 H' N1 Q3 i# F5 J) {' E
void print(int array[]): r6 o! Q, A8 Q6 j+ y; H: Z. O
  {int i;5 i* [* y$ X' J
   printf("The numbers after sort is:\n");/ r6 _( t) d" T* l
   for(i=1;i&lt;N;i++)
6 J; e$ B3 d7 w   printf("%d ",array);
) E3 f7 |# K+ @! r   printf("\n");
4 m* o1 O: P; q$ F5 O$ k  }</P>7 V9 I" i: ^- M1 R4 p
<>
; @. ?6 _0 F! w. dmain()
/ u% ]/ M6 }6 T" Q{int a[11],i,x,chang;
8 z/ |, Y8 i# Q/ y4 X3 T5 F, T /*printf("enter the array\n");
. I2 L/ O+ m: Q4 |8 _ for(i=1;i&lt;11;i++)
% R# V- ?) X" U scanf("%d",&amp;a);*/</P>5 y8 U  e) \: w( L  Y; W+ y+ Q9 U
<>aga:
8 K+ f) m3 X9 k. }/ 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");
# H, H$ x  I9 Q8 i( K3 R/ m  o8 ]  ~ scanf("%d",&amp;chang);3 R9 K8 `2 ~, f1 \, f$ k
switch (chang)8 W8 @% R! F7 V. ?
{case 1:0 z4 U: ^& C  ^4 n2 S- f
       {creat(a);* `$ X& k5 {9 B1 O) e- P
printf("lease enter the search number:\n");% P5 g9 c: z* n( ?2 o
scanf("%d",&amp;x);2 D2 A+ q4 ?2 s9 `
printf("The number station is:%d\n",search(a,N,x));
6 G- O( A" [7 p$ D goto aga;/ f7 p9 c0 c/ s$ ~3 H- E% d  y5 r
}
% O4 h. K3 D: w; ^# p7 `  q  case 2:0 j2 l% z0 U! x" z; I3 G2 b& Y
     { creat(a);& x  d( B3 g4 e) g( e8 G% T4 o
       insertsort(a);
/ {% `$ `3 g8 O# H% N9 W       print(a);. ?3 H* k6 H: \7 N
       printf("lease int the search number:\n");! k9 L( ]/ v/ X
       scanf("%d",&amp;x);
2 k; W. E" Q5 O7 T       printf("The number station is:%d\n",halfsearch(a,N,x));& w" l; i' P+ }( c; `& }7 C
       goto aga;
1 ?3 k# F/ X& r8 v3 c8 D3 ]: D      }' `$ W& s' i8 r3 u( U
   case 3:) @+ h4 w/ ]9 O5 T* ?/ `
     {creat(a);
7 o  i, `) h6 T) ?' K      insertsort(a);. B3 o; G8 A* e, C
      print(a);
- R8 X1 Y# k% \6 f      goto aga;1 |& U3 k7 v0 K
     }</P>
" i( n* Q, z1 N, K<>   case 4:
% |) T, ]4 P- {" s! U9 K4 n  _     {creat(a);7 C5 ~# p$ \+ \8 @; C
      mpsort(a);
& T5 S5 i- s; q, m- y      print(a);7 }, T  B; ^9 S/ z
      goto aga;& [, H: L& }+ N% {% l  o8 k) u
     }</P>4 k4 |; X) v( ~$ B- b; x! v* r8 W
<>   case 5:{ printf("exit!\n");break;}
! B5 }2 }! ~" q0 H) o" l7 r   default:{printf("Error!\n"); goto aga;}
# T4 U+ y+ U# _  [& ?}
# b: I/ ]: {6 T2 v3 k- Q+ t}
+ [, e; s" `7 s: ^' a; _- f
& f# o4 N# _6 X3 |8 j9 O; K. \ + j4 |$ z% V$ s' U# q+ e( W, z
</P>
4 i+ Z$ e3 a! @; Q4 k8 Q6 t; c
[此贴子已经被作者于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