数学建模社区-数学中国

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

作者: matrix_spaceman    时间: 2004-6-3 12:13
标题: 几种常用的查找和排序算法
<>
3 [: \, M7 f9 Z8 e% _  E#include &lt;malloc.h&gt;5 w/ @, V- _7 e7 i- @) C8 X
#include&lt;stdio.h&gt;* p- g0 h- i9 d- ~8 A
#define N 11
% s* f% E9 A! {( P( A0 a/*用监视哨查找*/- y+ c/ m8 O: s6 M7 x4 o  z1 x$ o% F
int search(int array[],int n,int k)
  i3 \9 Y5 X% d2 l, m( |9 ]{int i;
+ H; E  s- M7 d5 _( ^0 r1 ? i=n-1;% J. Z& ~$ d$ f  o, Q4 x5 k
array[0]=k;( x6 B7 x" z7 N, ]4 Q
while(array!=k) i--;
0 U" v( L7 V; Z7 }. z& I8 Zreturn(i);% h# k1 w" f& c; @: v. K, ]/ n* m
}8 ^+ Q$ C! {3 k! T& m4 K$ u
/*折半查找法*/
% M; O5 G; P0 s/ y# B: E0 @int halfsearch(int array[],int n,int k)
: q$ i8 c3 G% g! a0 R  N5 a{int i,j,mid;
7 |, E& q0 {. P2 s i=1;j=n;3 h& t4 ]% M  U0 y
while(i&lt;=j)
1 a4 d9 l, R0 l- Q! r{mid=(i+j)/2;6 y6 s* x/ N6 U
if(k==array[mid]) return(mid);3 O$ |3 A7 _+ A
else if(k&lt;array[mid]) j=mid-1;
: a, E6 L/ ~1 }# c( ]* o      else i=mid+1;7 \8 v$ Y. A0 @
}9 z9 P2 ?. ^) `+ r. c
return(0);
0 ?+ A& a1 Z, ~; e}</P>2 L/ ~7 }* l8 E+ v( w0 n! U6 G  j3 }
<>/*冒泡排序法*/
5 A; y# }3 D  l& `  z; V9 q% P, O2 nvoid mpsort(int array[])
, {9 ?& ]. e8 O{int i,j,a;1 }3 {) n1 {# ]6 }6 y  Q
a=0;
9 G5 i% R' g* C/ h% k for(i=1;i&lt;N;i++)
$ o7 O; J4 x2 n2 j: A  for(j=i+1;j&lt;N;j++)0 P0 e% e( m8 A$ p4 `
   if(array&gt;array[j])  {& D, {! b8 G) |- [  j
     {a=array;
5 ^0 G" ?2 u3 J5 k; Z     array=array[j];
9 x/ e8 e" {% z     array[j]=a;}* I( N. X$ O: `
}6 s' t, _: P( O( G6 [9 g" T+ Z7 M- W
/*直接插入排序*/
/ D2 P! `. f' w; evoid insertsort(int array[])7 [" T1 o' ?! p' n5 g
{int i,j;
; k$ J0 W! [+ d: @! @2 x for(i=2;i&lt;N;i++)
2 m0 l) w7 a2 l8 q) `% i6 k4 d {array[0]=array;) c$ c* @( F) t3 p
j=i-1;1 O. u' D) y( Q; V
while(array[0]&lt;array[j])  h# i1 E, e7 \( {
{array[j+1]=array[j--];% F1 a0 B. p  [: R: v* c
array[j+1]=array[0];
4 t/ v1 v4 C  ?0 |}
$ \7 X  q  C" ?+ ~8 U/ f}
- k- g  G3 z' m) `: _3 z1 M' c}4 ~. D7 o# d1 c( m, u8 C* G# O
/*建立*/
( n- J) M3 R+ ?1 G, jvoid creat(int array[])+ `& x5 v. p" B6 N- V; z1 W8 W% a
{int i;
% G& j5 J* e' y printf("enter the array:\n");, k) W! @" |# I. H; J: i) y& X9 _
for(i=1;i&lt;N;i++)7 r( ~& Y$ R6 b- Y, P" @9 ^5 Y3 B
scanf("%d",&amp;array);& c) {% Q5 _9 m* A
}</P>
) g7 ^; i6 Q# m9 d) q<>/*显示*/7 T5 d6 M) z" [1 I1 n8 d
void print(int array[])4 L% g% i" b5 q# s) T9 n
  {int i;
) _1 Y1 W9 m4 M% G. S5 I/ U   printf("The numbers after sort is:\n");, E* w0 |& w* l2 @1 m6 E; |; j
   for(i=1;i&lt;N;i++)
2 Q  K  G- n8 ?+ j   printf("%d ",array);6 t* O- b" Q8 _& _+ }
   printf("\n");
) i5 w; u. |( s0 Z  }</P>
! O, L  b2 h6 L% O<>
. {, x+ l. M4 umain()* e# n( J- W: R& Y; z0 @4 L
{int a[11],i,x,chang;
6 v+ h1 @3 X+ ]: y# ?4 \+ [' [ /*printf("enter the array\n");/ U- d5 j6 G" q/ U) @
for(i=1;i&lt;11;i++)
' R9 z7 L$ U& F' X1 o scanf("%d",&amp;a);*/</P>
! X3 `: H+ ~! z9 x<>aga:8 x$ _2 s. C. m9 _% `+ _+ |: R( h
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");
  b( c# \% U' j" o% t: N scanf("%d",&amp;chang);7 |2 N7 _/ T) e* W1 v/ V
switch (chang)0 i. f: l  F8 P* a+ ~
{case 1:
  b3 v" z$ t4 P( \4 W% z( A8 A; N       {creat(a);+ o5 h" W# u+ r$ O# A* I7 C: b
printf("lease enter the search number:\n");
4 w5 [; h+ w$ t! T1 z scanf("%d",&amp;x);
; A, M/ v& z9 l printf("The number station is:%d\n",search(a,N,x));/ U. d" P0 w7 Y# d* z
goto aga;6 q, G) i. q: ~1 ^9 K8 a2 o$ J
}
! r3 E! u1 M5 I. ], e8 s' C5 S, p. ?9 M7 C  case 2:: q- F2 ~  [! H2 M  W- g
     { creat(a);
- @- e( q9 Z" v# R& f- O( a       insertsort(a);5 X2 d6 o& J9 }& A2 N7 o  Q
       print(a);+ D$ K/ {5 m+ Q
       printf("lease int the search number:\n");
9 S! b( U$ ^  S9 [, |       scanf("%d",&amp;x);1 V8 m) x7 H+ }2 E! }- N
       printf("The number station is:%d\n",halfsearch(a,N,x));
, m8 i. ]5 Z' e! n       goto aga;* V7 a, j. S" E3 U4 _
      }: p: E7 {/ t! o  }9 b6 ~
   case 3:
, Y6 j- T# [5 Z9 ^* \     {creat(a);+ D. O5 W1 c% @
      insertsort(a);" {" n. O$ _- e; B
      print(a);
- P4 v* N& j1 Y9 e1 z      goto aga;
( F! v0 a: }5 L) B- _0 v8 L" I     }</P>
' O4 l! [3 S3 |! `) N<>   case 4:# `) h$ h. G/ @5 e0 V
     {creat(a);
, H3 m) U4 ~7 Z      mpsort(a);( t! [" M9 I% N( J; b! G
      print(a);
; x0 C9 B1 {; H      goto aga;! x  B3 ?5 I) r' Y& V) @) J
     }</P>! K7 ?7 \: n0 t8 O4 Y  o/ K0 Z
<>   case 5:{ printf("exit!\n");break;}
% m7 {' l5 ^- N7 S   default:{printf("Error!\n"); goto aga;}7 J0 c% L3 j7 S9 i( A4 |
}: f5 [/ J% n" f
}& x4 D* }# T) j6 i3 I. l! I' y
8 ~: x0 Q: }" C( L# C" R8 s
( b, }5 ~5 S$ j+ @  O* P' n7 }
</P>1 a  X8 i1 T2 x0 D" x3 b9 w
[此贴子已经被作者于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