数学建模社区-数学中国

标题: 排序与查找方法 [打印本页]

作者: 厚积薄发    时间: 2010-5-31 17:42
标题: 排序与查找方法
#include
- w* R4 Q. T, W/ u! Y" o  K#include; g9 R+ r3 J) J6 |4 {
#define N 11  X/ I# r4 ^) J; z5 [! M  ^: L
/*用**哨查找*/
* E" C0 E& s6 ^& p% [. G3 j! bint search(int array[],int n,int k)
8 E$ a3 Y0 A* ?2 M{int i;
) x9 o) [7 g' P4 w+ t8 q, wi=n-1;
0 x8 E/ U; y# S* H- Garray[0]=k;0 |3 K" B3 R3 K( t0 W% p; `6 P6 D
while(array[i]!=k) i--;8 d6 C6 g2 T; Q) q+ c: w
return(i);3 _# V" q7 I8 t- Q' X0 r/ e) S7 v
}$ Z9 ?4 g% G0 ^, I) v, r# a, S
/*折半查找法*/
$ y9 M8 N" u5 a, E; K0 O+ E- Z! Sint halfsearch(int array[],int n,int k). z, \1 y. O8 b9 t
{int i,j,mid;3 W. z- [, c3 X2 v* X3 Q& g; M
i=1;j=n;) D3 W1 K' w4 y9 p! |* l& d6 Q4 h
while(i<=j)
, k: h- n6 c, x{mid=(i+j)/2;0 F  c5 Q& A2 M, @
if(k==array[mid]) return(mid);
- u: x9 C0 f, R# I5 {else if(k
: D7 W/ f7 e- pelse i=mid+1;
' l4 z0 {0 }6 f% t  Z6 b# R1 p/ b, x8 @}
4 K* m+ B: p9 Z: L$ {return(0);& ^3 a4 a- Q* J
}
* C3 S0 |+ c7 e! U/*冒泡排序法*/
( U" p1 C% x, p5 i8 F9 jvoid mpsort(int array[])9 k8 L1 Z1 W3 ]3 a, @" h2 \
{int i,j,a;
" b0 z& v! i* d9 @0 g7 da=0;
3 z3 K0 d7 S. L/ }& x$ Xfor(i=1;i
( G- `- w% I4 ~. B! H+ l5 P' Kfor(j=i+1;j # P7 c8 W: f  M- f
if(array[i]>array[j])+ t% b+ |1 ?7 t# q' w  T! Z6 u
{a=array[i];/ R8 \' b/ z' s7 c: a  m  W. a! @5 ]5 o
array[i]=array[j];5 s# B$ {$ J" x3 [
array[j]=a;}
  _2 S- t# q7 w}
0 I4 _0 V- u" G* i% o% P, n/*直接插入排序*/
( q: m1 e  Y1 l; |7 w( I, E1 Qvoid insertsort(int array[])
& e/ ^  v# S8 l) N) x+ f$ G{int i,j;, z% O. r+ K' U' L1 X6 F8 D( r; B/ Z
for(i=2;i
; F" p) h4 W8 z6 N: ?5 _  E{array[0]=array[i];* X4 K: v+ V# H; f5 y
j=i-1;1 G' Y& G0 P3 L7 _0 L
while(array[0] 3 j5 d3 Y$ e# l0 ?! v1 {
{array[j+1]=array[j--];0 D3 u4 b, i6 f0 ^0 f7 [
array[j+1]=array[0];1 E% e( ?' k8 u% S; Q
}
3 m- H$ t' Z$ p5 L}
% {2 k' t( O/ S9 l: N}
; [. {* M' R# a4 C/*建立*/" ~/ B/ A" |" @
void creat(int array[])+ J  ^) i) S5 R. u
{int i;
/ t" r+ D$ ^* H" ]0 V8 Qprintf("enter the array:\n");! |9 g1 q* m, f/ c  D. i8 P, ?
for(i=1;i , G8 j9 {: ~7 _
scanf("%d",&array[i]);
/ _; z. F! P9 n8 o% [4 x5 s}
3 O/ U! y9 Y5 ^1 _, D% L/*显示*/) C' F! S: W8 ?/ M* n
void print(int array[])6 I' b7 r9 H0 v# u$ _: K  J
{int i;- B# Z& B1 x) t9 G
printf("The numbers after sort is:\n");
- \7 s6 u7 {) E6 E. s9 ]' Yfor(i=1;i 3 h3 I4 P1 w% d0 y2 i
printf("%d ",array[i]);
6 H6 h! @) p' G+ mprintf("\n");4 [7 K* n% l' x" W" K
}
/ w% m9 J* \  [main()* s; x3 u" t( E; R9 x: P" q7 ~3 Y
{int a[11],i,x,chang;
( v3 C, o) I/ p  M1 L/*printf("enter the array\n");
3 q1 {, G, U" H7 a2 @! \4 W' q9 mfor(i=1;i<11;i++)1 n- F4 d$ z  T4 W! V& I, _
scanf("%d",&a[i]);*/
* s9 f* i8 V" k& Y' faga:( e% F3 l2 [/ C% `* m' p
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");
2 F& K: Q7 |4 T( L8 bscanf("%d",&chang);
, K+ L7 N) M* l& V0 h/ I: `) tswitch (chang)( i0 X" R5 x: J3 k) @
{case 1:9 [9 k0 C  `! S
{creat(a);% J1 f3 V1 U0 X+ d" R+ }
printf("Please int the search number:\n");/ m) ^' g% v4 k8 C2 h: C; \
scanf("%d",&x);9 o/ t, B5 z" {" X8 K  a0 b
printf("The number station is:%d\n",search(a,N,x));
7 e+ \7 W# l: t( s1 n: Cgoto aga;
- Y- \( L0 ]" d/ I. v}9 L9 q& B% E! T2 H/ V& S$ C- r
case 2:- ~/ n$ G5 p1 ?  @: z/ S4 }0 J
{ creat(a);
! C7 B8 v6 |, V9 w& h3 qinsertsort(a);
  C' \: z5 a- U% y, }  Nprint(a);1 ~% B: j$ p. N1 Y  h8 @
printf("Please int the search number:\n");5 ~9 v- d6 i9 P( j. E4 y8 {1 z
scanf("%d",&x);
; e" o  Q4 I: x( M& D: _' rprintf("The number station is:%d\n",halfsearch(a,N,x));. c$ x& T: @( D$ f, R
goto aga;
; N3 c$ H% b% _4 i}3 s- g; {( d) O  [. i2 X8 Z4 P
case 3:) P& g( X( c/ O8 A+ z3 J3 D4 t
{creat(a);
0 A# R; A# o5 e4 ?/ V6 u* Rinsertsort(a);
/ n, G3 T- G9 Q: O4 c5 }print(a);
/ k/ b4 u' s* `; H/ h! ]( B4 O- ], }goto aga;$ J+ P9 v8 k  W' f5 O, m: V& B, P
}  l2 ?" m/ ]8 Z& d) [! x2 \7 E5 S
case 4:
! n. H' B" Z% F/ U! f4 S: W{creat(a);7 \# I6 k: d' E7 K
mpsort(a);  z0 C6 m* C+ i" Q
print(a);8 v8 z* l" M4 m5 s! D+ }0 L3 x: u
goto aga;/ b7 w1 `! p. c, E
}% C+ P$ _6 _0 I9 }6 d
case 5:{ printf("exit!\n");break;}
7 @  J4 D4 h! |default:{printf("Error!\n"); goto aga;}
* J+ ]3 _% ^+ g" o. Q4 a}5 a8 x  g5 s- V8 t' \% D8 u+ P
}- V5 U9 P* j4 F: W% s0 T: C  F

* k) F- K% j! o, {; b7 s, |. b& W) O
作者: gl1990119    时间: 2010-6-1 22:21
厉害!!!!!!!!!!!
作者: xushu    时间: 2010-10-23 00:05
数据结构学得不错!




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5