数学建模社区-数学中国

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

作者: matrix_spaceman    时间: 2004-6-3 12:13
标题: 几种常用的查找和排序算法
<>
' |8 H' `3 i/ C5 _#include &lt;malloc.h&gt;
+ @9 g4 J) N4 ~9 t! i#include&lt;stdio.h&gt;
* E7 j, _6 {, R. J6 R) X( H#define N 112 O7 N& O5 K# m5 w6 J8 [
/*用监视哨查找*/- F  S8 N6 A8 V* K+ H9 y
int search(int array[],int n,int k)2 b" c" e1 v* m) z
{int i;. l9 A% ~. i4 |, Q4 {$ Y. {: P
i=n-1;9 ~9 S( e/ E5 u, G  o! B
array[0]=k;1 A% K  r2 p" [. }4 l9 J7 y
while(array!=k) i--;
6 _* z/ {) M! f, n% ]return(i);9 n, u5 d( Y1 a
}
3 R+ J# J2 n1 B6 D# ^% L/*折半查找法*/
# l2 }* `1 Q  E! h& gint halfsearch(int array[],int n,int k)! a0 t9 I/ @3 [, l
{int i,j,mid;$ I7 U6 _3 Y0 U- z
i=1;j=n;- P- _5 Y% Y# p
while(i&lt;=j). h' D) q5 K+ P3 v6 J2 h8 O
{mid=(i+j)/2;, L( F. L' Z+ }8 I1 c7 \- c4 q/ w4 m8 d
if(k==array[mid]) return(mid);
8 O1 R3 p5 K+ o. X% lelse if(k&lt;array[mid]) j=mid-1;
" F. a+ u5 K3 X* @; F      else i=mid+1;! p6 s" ?( E: a8 h! ?2 |) b
}
8 z" o4 _% p% I( S7 E3 n% Preturn(0);
  z/ Y8 R7 y- o% f# C5 r  ~# F}</P>2 h* W3 N% P0 }  F  {
<>/*冒泡排序法*/* G' {4 ^: d. ?) @
void mpsort(int array[])
+ O! Q2 I. V, B{int i,j,a;8 s9 j* E& N6 a8 {5 m
a=0;
5 d! z9 m& u7 P6 A$ A for(i=1;i&lt;N;i++)
0 X5 i' {$ e, |) A: C# d  for(j=i+1;j&lt;N;j++)( l9 }6 F5 H' c3 u
   if(array&gt;array[j])" R. }, W% P3 m: q7 Q" B
     {a=array;/ V1 h7 D  @2 L6 d' x5 o! K$ n
     array=array[j];
6 n- V7 P! @  a$ J  Q. m5 G6 R' C     array[j]=a;}# [8 h2 n3 A" L1 }- q6 i' \
}
1 a# F* i$ Y, t7 q! W! Y0 ~! j/*直接插入排序*/
' K7 H' z+ }, w9 Svoid insertsort(int array[])( ]  ~+ w- c* \3 H
{int i,j;
- P/ Q  e% C% o# K3 n9 C. G for(i=2;i&lt;N;i++)
, O- E$ O2 \  x4 Z& P, P7 G2 d {array[0]=array;
% T9 x9 v3 [0 Y! m  aj=i-1;: ]* I# o$ C( k6 b5 h+ @
while(array[0]&lt;array[j])4 T; Y9 F% l( O' T- C! I
{array[j+1]=array[j--];- G$ R' V8 u( I1 z/ S1 D5 S2 \
array[j+1]=array[0];, A1 y9 o, s+ w
}1 i) k3 k# s7 j! T8 j/ _
}5 k4 k1 h8 p9 C3 l" e1 l
}7 s% R7 H; C( g0 E' q; ~, L
/*建立*/1 K1 n0 c" L4 z! [% h
void creat(int array[])
. ]% i7 S0 [. [6 }" J{int i;
$ ~. X) k1 F1 G/ _2 ? printf("enter the array:\n");, v5 w7 @$ L* u$ S4 o+ `
for(i=1;i&lt;N;i++)
' U% \+ q) }( w; `( u2 b9 b scanf("%d",&amp;array);& Z8 g6 w; {+ A. r/ w6 f% x
}</P>! a, W0 W( Q0 E5 w4 p- L/ ], D
<>/*显示*/
& A) I9 w3 K: d8 I+ r' {0 Yvoid print(int array[])
/ n6 B  X9 s# _' q  {int i;
1 q2 ?* d: f) C; B   printf("The numbers after sort is:\n");
4 S- A5 L  Y1 p( v- Y- [   for(i=1;i&lt;N;i++)
9 P. N8 X' \6 d& p# _   printf("%d ",array);
$ l9 X# Z5 G+ X$ J   printf("\n");
" S! y1 {4 U! e$ b1 p6 d3 N+ c  }</P>; k1 ^# c7 p" _
<>) C- `# O; f' o: s& l! X- G
main()1 O, x* Q% L8 n- _- v6 \) }, F
{int a[11],i,x,chang;9 y+ Z' D$ g. K7 u- n. i
/*printf("enter the array\n");
: {3 {* J# g$ H1 u  ] for(i=1;i&lt;11;i++)
- W6 R" B  i( v: ^, M: i- k, |& R7 e scanf("%d",&amp;a);*/</P>
8 X' \4 s& D! K+ o<>aga:, |! ^1 s+ F0 T1 |. v
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");9 e' n& z5 b. d% q7 T3 P$ J6 E- V
scanf("%d",&amp;chang);
. r3 V! m3 Y3 T0 ~5 Z; ? switch (chang)/ U/ v0 C# B4 ^0 F, g
{case 1:
" C$ v/ J+ N# r; b6 F4 P       {creat(a);
. i1 p% {+ m" `8 y printf("lease enter the search number:\n");% K; G  @8 i0 y# [# ~6 s4 m
scanf("%d",&amp;x);7 Z" I& r$ ?. [
printf("The number station is:%d\n",search(a,N,x));
' S' ?" l4 D) J) v. E, q8 Q8 @ goto aga;
5 {$ x5 V: m. d" N5 o& l }7 L) g, m  f; v2 s6 e
  case 2:
5 h2 G0 h) C0 s" V     { creat(a);% m3 d9 J' k, R
       insertsort(a);
" \# A) V! B* }( \       print(a);
2 ~8 `+ I! x: ]       printf("lease int the search number:\n");
  {' H2 V. V0 B; ~+ H7 d9 s4 T       scanf("%d",&amp;x);( A4 M) z2 }$ }; K; s* A7 r
       printf("The number station is:%d\n",halfsearch(a,N,x));+ J) E0 f- Z5 M% e
       goto aga;; C, U. ^4 `% F% r6 M3 c
      }: G4 R( }' Q5 h$ R6 o0 ]4 T
   case 3:, A3 l& P* a8 j/ F
     {creat(a);
0 d* V3 x0 W9 J$ ]: R. D      insertsort(a);
# h$ E3 P! P# Q4 x      print(a);$ }6 Q$ E4 c* r$ ]; S% [5 v
      goto aga;
3 P" ^9 C; Q  @0 F% q     }</P>% f7 Y. m6 |, q5 I. Y1 h
<>   case 4:
- `; |) n- b: C     {creat(a);0 [* l2 i" C, N& {: ?3 h/ G& h3 X0 |
      mpsort(a);
+ W, j" I/ k3 n5 c/ H  s      print(a);( r+ ^) E$ V3 \' U& h
      goto aga;& S# Y2 J# T7 k/ q: T
     }</P>& c# q7 u) F( k) p
<>   case 5:{ printf("exit!\n");break;}
4 }  _/ [1 Z3 N0 R   default:{printf("Error!\n"); goto aga;}
$ t+ t% H" @6 ?" f2 `* s+ e1 W* m4 `}
: L$ W6 e2 O& f6 ]. z}
" T) K* Y8 m  ^$ W$ r
- o2 z  p6 ^# N  b 7 w! g% T0 e% H" h$ t) Z
</P>
3 t& |% f7 ]2 p8 K+ e+ R, h" _1 L
[此贴子已经被作者于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