冒泡排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include<stdio.h>
#define N 11
void sort()
{

for( i = 1; i < (N-1); i++)
{
for( j = 1; j < (11-i); j++)
{
if( a[j] > a[j + 1] )
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
}
main()
{
int i, j, t, a[11];
printf("INPUT 10 NUM : \n");
for( i = 1; i < N; i++)
scanf("%d",&a[i]);
printf("The num is : \n");
for( i = 1; i < N; i++)
printf("%5d",a[i]);
printf("\n");

/************************/

printf("the sorted num : \n");
for( i =1; i <= 10; i++)
printf("%5d",a[i]);
printf("\n");
}

选择排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include<stdio.h>
#define N 11
void main()
{
int i, j, t, a[N];
printf(" input 10 num : \n");//读入数组
for( i=1; i<N; i++)
scanf("%d",&a[i]);
printf("before : \n");//原始数组
for( i=1; i<N; i++)
printf("%5d",a[i]);
printf("\n");

for( i= 1; i < 11; i++)
{
for( j = i+1; j < 11; j++)
{
if( a[i] > a[j])
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
for(i=1; i < 11; i++)
printf("%5d",a[i]);

printf("\n");
}

直接插入排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/*
**直接插入排序
*/
void insort ( int s[ ], int n)
{
int i, j, t;
for( i = 2; i <=n; i++)
{
s[ 0 ] = s[ i ]; //s[ 0 ] 没有存数据,借用
j = i -1;
while(j >0 && s[ 0 ] < s[ j ])
{
s[ j + 1 ] = s[ j ]
j- - ;
}
s[ j + 1 ] = s[ 0 ]
}
}

希尔排序( 直接插入排序改进版)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include<stdio.h>
#define N 11
void shsort( int s[], int n )
{
int i, j, d, t;
d = n / 2;
while( d >= 1)
{
for( i = d +1; i <= n; i++)
{
s[0] = s[i];
j = i - d;
while((j > 0) && ( s[0] < s[j] ) )
{
s[j + d] = s[j];
j = j-d;
}
s[ j + d ] = s[0];
}
d = d / 2;
}

}
main()
{
int i, j, t, a[11];
printf("INPUT 10 NUM : \n");
for( i = 1; i < N; i++)
scanf("%d",&a[i]);
printf("The num is : \n");
for( i = 1; i < N; i++)
printf("%5d",a[i]);
printf("\n");

shsort( a, 10);

printf("the sorted num : \n");
for( i =1; i < N; i++)
printf("%5d",a[i]);
printf("\n");
}