对数组进行排序,主要演示选择排序、直接排序、冒泡排序、二路归并排序算法,附上代码演示
一、编写好各类排序方法的函数
(1) s_sort(int e[],int n):选择排序。
(2)si_sort(int e[],int n):直接插人排序。
(3)sb_sort(int e[],int n):冒泡排序。
(4)merge(int e[],intn);二路归并排序。
二、调用上述函数实现下列操作:
(1)给定数组 E[N]={213,111,222,77,400,300,987,1024,632,555};
(2)调用选择排序函数进行排序;
(3)调用直接插人函数进行排序;
(4)调用冒泡函数进行排序;
(5)调用二路归并排序函数进行排序。
三、代码演示:
1、选择排序源代码:
#include<stdio.h>
#include<conio.h>
#define N 10
int E[N] = {
213, 111, 222, 77, 400, 300, 987, 1024, 632, 555 };
void s_sort( int e[], int n )/* e:存储线性表的数组 n:线性表的结点个数 */
{
int i, j, k, t;
for( i = 0; i < n-1; i++ ) {
/* 控制n−1趟的选择步骤 */
/* 在e[i], e[i+1],...,e[n−1]中选键值最小的结点e[k] */
for( k = i, j = i + 1; j < n; j++ )
if( e[k] > e[j] )
k = j;
if( k != i ) {
/* e[i]与e[k]交换 */
t = e[i];
e[i] = e[k];
e[k] = t;
}
}
}
void main()
{
int i;
printf( "顺序排序 初始数据序列为:\n" );
for( i = 0; i < N; i++ )
printf( "%d ", E[i] );
s_sort( E, N );
printf( "\n排序后数据序列为:\n" );
for( i = 0; i < N; i++