数学建模社区-数学中国
标题:
排序与查找方法
[打印本页]
作者:
厚积薄发
时间:
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! b
int search(int array[],int n,int k)
8 E$ a3 Y0 A* ?2 M
{int i;
) x9 o) [7 g' P4 w+ t8 q, w
i=n-1;
0 x8 E/ U; y# S* H- G
array[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! S
int 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- p
else 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 j
void mpsort(int array[])
9 k8 L1 Z1 W3 ]3 a, @" h2 \
{int i,j,a;
" b0 z& v! i* d9 @0 g7 d
a=0;
3 z3 K0 d7 S. L/ }& x$ X
for(i=1;i
( G- `- w% I4 ~. B! H+ l5 P' K
for(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 Q
void 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 Q
printf("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 ]' Y
for(i=1;i
3 h3 I4 P1 w% d0 y2 i
printf("%d ",array[i]);
6 H6 h! @) p' G+ m
printf("\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 m
for(i=1;i<11;i++)
1 n- F4 d$ z T4 W! V& I, _
scanf("%d",&a[i]);*/
* s9 f* i8 V" k& Y' f
aga:
( 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 b
scanf("%d",&chang);
, K+ L7 N) M* l& V0 h/ I: `) t
switch (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: C
goto 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 q
insertsort(a);
C' \: z5 a- U% y, } N
print(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: _' r
printf("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* R
insertsort(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