数学建模社区-数学中国

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

作者: matrix_spaceman    时间: 2004-6-3 12:13
标题: 几种常用的查找和排序算法
<>
! Q9 ^) h! c9 T3 V9 @( l#include &lt;malloc.h&gt;+ `' D+ h2 p3 ]: T# E7 @
#include&lt;stdio.h&gt;
* d0 ]1 w7 B6 e#define N 11; `  h% ]; Z$ A3 q8 X: K
/*用监视哨查找*/
' l7 B! f3 B* Q( r% yint search(int array[],int n,int k)
! m7 Y! @! E  x- }8 m{int i;% u; ], \3 H  ^" u6 u2 F' V, i
i=n-1;
# |- K9 @( j/ ^  h4 a7 r! Narray[0]=k;; _1 y1 _- ~/ @% l/ g1 R
while(array!=k) i--;
" q1 H6 B- D* ~5 g/ l) b* Lreturn(i);
+ @# z6 p' r% e8 n  j}
5 @. t8 m* Q, n9 ]/ ]5 U/*折半查找法*/
7 w' |% `! q5 X9 e* i$ aint halfsearch(int array[],int n,int k)
0 ~" w, I& X4 L) [! `. ?: H{int i,j,mid;  o" M. K7 Q- |
i=1;j=n;( W5 o5 {  h; G% ]# Q$ T* k4 w
while(i&lt;=j)
1 f9 h" T8 E$ S* g0 t# R7 ~/ g{mid=(i+j)/2;' T, J1 _! |  h9 l1 M, d6 d& s: _7 M5 v
if(k==array[mid]) return(mid);" n4 x. L! \/ u* y: a8 V) O2 L
else if(k&lt;array[mid]) j=mid-1;
" Q9 N+ c' T& x7 d8 W# R) |      else i=mid+1;* q9 e" s+ I! }! z" h
}
- ?  f( ?- O6 @5 l' W) Yreturn(0);8 F; {' |: z8 s. I! [0 Y3 S$ Y1 b
}</P>
! @  a1 R+ g; F<>/*冒泡排序法*/2 s% H7 u9 E1 _+ u
void mpsort(int array[])# d% B& d9 M$ V7 ?, d% h& ~3 o5 R
{int i,j,a;
1 R5 D/ b$ Q# K5 i+ \3 Ra=0;( Z. z. D" S1 j1 a1 h7 C4 [; g
for(i=1;i&lt;N;i++)& \. k1 B) u4 c7 L7 \- I' U8 B
  for(j=i+1;j&lt;N;j++)
1 o) T  a2 W4 Q2 y   if(array&gt;array[j])
# L" B2 G% k7 F6 }4 p; F     {a=array;
, N$ I' L1 R. o, {& M1 s' V  _     array=array[j];4 ]2 W+ y( s4 C& u' l' e% c
     array[j]=a;}
9 r4 [2 r- s2 a5 H}* i8 ?# p! z9 I- F
/*直接插入排序*/) g1 s! ]8 L' I# n& o
void insertsort(int array[])2 A5 H9 _/ d* K: E
{int i,j;
& t/ O, v8 x% H; g5 [ for(i=2;i&lt;N;i++)
# ~  Y7 E/ X& @: O2 j2 y; C* N' ?2 q; y {array[0]=array;
) F7 I8 @5 n, ~  ?- K8 ~, oj=i-1;- Y8 q8 B. c8 s
while(array[0]&lt;array[j]): a/ `/ |. \$ ?# u. \2 r
{array[j+1]=array[j--];
2 i7 B& z5 O% ]5 V# i; k array[j+1]=array[0];0 E0 j1 _# D) R( D
}. ]6 A# Z6 H+ c
}
7 s0 z( g' u* P* i7 f7 k/ r}
/ m3 y  N/ x- j  @/*建立*/
2 O$ @- U, H; svoid creat(int array[])1 V4 k$ c: ], N/ ~
{int i;* c9 W" I7 U; n* d
printf("enter the array:\n");
& L- b+ E) ^8 h" _# ^ for(i=1;i&lt;N;i++)
# G$ x6 ]9 _* E! N& j scanf("%d",&amp;array);" I7 R; ^4 ^8 `( k( h+ w9 ~
}</P>
: _! m) E/ k1 }; ?<>/*显示*/
) k, ?) x0 I8 ~6 w( ~! `void print(int array[])7 R" z' w3 c: t. O# ]8 V
  {int i;
2 a- B$ Z! E7 K4 E. K, W9 A+ h   printf("The numbers after sort is:\n");
. `( Z# [5 T9 L6 E' ^4 l   for(i=1;i&lt;N;i++)$ ]4 v1 A% i% w/ B
   printf("%d ",array);
4 j& Q$ K7 U5 M. n# E   printf("\n");
/ S7 F  y; `5 E1 k5 L4 g  X7 r0 d  }</P>
- y2 C. Y3 S6 S9 K<>
  p0 g5 Z% }( O2 o9 F, Y' b" @8 D5 jmain()  b1 w$ Q; P% _" d2 }
{int a[11],i,x,chang;
4 T$ |( o4 e) `/ j /*printf("enter the array\n");
8 q8 o4 r  v, G5 l. q; |* A for(i=1;i&lt;11;i++)
  p6 C6 W4 `# F5 k* l# m scanf("%d",&amp;a);*/</P>
  T- A  e; J4 a<>aga:
* {/ m! Z  z4 e# Q 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");
$ t/ W* M6 s$ d  a/ j% ]' q& \' O scanf("%d",&amp;chang);
, t$ f$ V; x6 Q3 z  B switch (chang)
( @0 h4 a% h0 g- j0 r- g {case 1:
# M6 ], F- ^- z# `6 z% |       {creat(a);, G* K0 R- [' ^8 \- ~. r
printf("lease enter the search number:\n");
2 Y3 `) q9 r2 k  ?! E scanf("%d",&amp;x);
) c5 a! k, G+ b; Q: t printf("The number station is:%d\n",search(a,N,x));) t9 _* E8 r& b! K8 D! s
goto aga;5 A5 v7 j7 I! o/ L& `' O: U
}/ S+ Z5 U) @- G; U# c
  case 2:4 B. g2 x" d" W* n1 B2 N0 ~
     { creat(a);' V7 ~$ s. y) T9 G' P# S1 m
       insertsort(a);8 b- G. O3 {9 m: M& U, L
       print(a);
  n; R% ^8 g* M( U' b3 }       printf("lease int the search number:\n");: [1 g, f/ |- W2 ]% c
       scanf("%d",&amp;x);" `* a9 N5 N+ \. a
       printf("The number station is:%d\n",halfsearch(a,N,x));
) a3 U8 E8 e+ V. D( \       goto aga;9 G$ K# k& j7 V5 C
      }0 G3 b. s9 e: g8 F" v# n" H
   case 3:
4 V8 b5 u& y% U     {creat(a);+ R% e& f9 x) x
      insertsort(a);
1 G  d+ I4 ~$ E$ {0 y* Y      print(a);
/ {# ]5 R& S4 [" Z* A      goto aga;
( C7 R& S$ p: k) |; ^* N     }</P>
/ r2 U) a2 `/ ~: u6 J6 |2 I<>   case 4:
7 X3 q& @9 Q0 S5 d7 h  Q* H     {creat(a);
+ k, I: A( }; v2 C      mpsort(a);
1 F" u( T. R8 D  j7 t      print(a);& u# ?6 B" o/ l. O( S  |9 P
      goto aga;- X2 ]4 h* O& X) w8 D" N" X; h( P; R
     }</P>8 @: D( q9 p( v% P
<>   case 5:{ printf("exit!\n");break;}
# i/ t0 d# [2 l, N" |   default:{printf("Error!\n"); goto aga;}
+ E: S# Q' p  |! ^* ^}" E: p8 V- I4 W  J4 L  _/ V
}5 f; F  T! T) u) k+ g' n+ ]$ f, x
7 \) }2 s( m; |' e

1 [5 M% R5 D+ A1 H4 W; H! U' G</P>
2 n; W- [/ {# b$ g" T* c0 ?
[此贴子已经被作者于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