编写函数实现顺序查找,折半查找,直接选择法排序,冒泡法排序和直接插入法排序的代码,并进行测试验证.

跪求编写函数实现顺序查找、折半查找、直接选择法排序、冒泡法排序和直接插入法排序的代码,并进行测试验证。

//1.冒泡排序
#include <stdio.h>
/**************************************************************
* BubbleSort:冒泡排序实现函数(从小到大 *
* 参数:a[]:排序前的整型数组 *
* n:数组元素数 *
* 返回值:无 *
***************************************************************/
void BubbleSort(int a[],int n)
{
int temp=0;
int i=0;
int j=0;
int k=0;
int swap=0;
int swapNum=0;

for(i=0; i<n-1&&!swap; ++i ) //如果一轮中没有交换则说明已经排序完毕
{
swap=1;
for( j=n-1; j>i; --j )
{
if( a[j]<a[j-1] )//改为>则为从大到小排序
{
temp=a[j-1];
a[j-1]=a[j];
a[j]=temp;
swap=0;
swapNum++;
}

for( k=0; k<n; k++ ) //打印当前数组中的数值
printf(" %d",a[k]);
printf("\n");
}
printf("****** %d 冒泡出来******\n",a[i]);
}
printf("共交换次数:%d\n",swapNum);
}
/***************************************************************
* 主函数:调用冒泡排序函数实现排序 *
****************************************************************/
void main(void)
{
int i=0;
int j=0;
int k=0;
int a[5]={9,8,2,5,3};

BubbleSort(a,5);

for( i=0; i<5; i++ )
printf(" %d",a[i]);

printf("\n");
}
/*结果:
9 8 5 2 3
9 8 2 5 3
9 2 8 5 3
2 9 8 5 3
****** 2 冒泡出来******
2 9 8 3 5
2 9 3 8 5
2 3 9 8 5
****** 3 冒泡出来******
2 3 9 5 8
2 3 5 9 8
****** 5 冒泡出来******
2 3 5 8 9
****** 8 冒泡出来******
共交换次数:10
2 3 5 8 9*/

//2.选择排序
/*#include <stdio.h>
/**************************************************************
* SelectSort:选择排序实现函数(从小到大排序 *
* 参数:a[]:排序前的整型数组 *
* n:数组元素数 *
* 返回值:无 *
***************************************************************/
/*void SelectSort(int a[],int n)
{
int temp=0;
int i=0;
int j=0;
int k=0;
for( i=0; i<n-1; i++ )
{
k=i;
for( j=i+1; j<n; j++ )
if( a[k]>a[j] ) //改为<则为从大到小排序
k=j;
if(k!=i)
{
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
for( j=0; j<5; j++)
printf(" %d",a[j]);
printf("\n");
}
}
/**************************************************************
* 主函数:向选择排序函数传递被排序数组实现排序 *
***************************************************************/
/*void main(void)
{
int i=0;
int j=0;
int k=0;
int a[5]={9,8,2,5,3};

SelectSort(a,5);

printf("\n");

for( i=0; i<5; i++ )
printf(" %d",a[i]);

printf("\n");
}
结果:
2 8 5 3 9
2 3 5 8 9
2 3 5 8 9
2 3 5 8 9

2 3 5 8 9*/

/3*插入排序
#include <stdio.h>
/**************************************************************
* InsertSort:插入排序实现函数(从小到大排序) *
* 参数:a[]:排序前的整型数组 *
* n:数组元素个数 *
* 返回值:无 *
***************************************************************/
/*void InsertSort(int a[], int n)
{
int i=0;
int j=0;
int k=0;
int temp=0;

for( i=1; i<n; ++i )
{
temp=a[i];
for( j=i-1; j>=0 && temp<a[j]; --j) //temp>a[j]为从大到小排序
a[j+1]=a[j];

a[j+1]=temp;

for( k=0; k<5; k++ )
printf(" %d",a[k]);

printf("\n");
}
}
/**************************************************************
* 主函数:传递给插入排序函数整型数组和长度实现排序 *
**************************************************************/
/*void main(void)
{
int i=0;
int j=0;
int a[]={9,8,5,3,2};

for( i=0; i<5; i++ )
printf(" %d",a[i]);
printf("\n");

InsertSort(a,5);

for( i=0; i<5; i++ )
printf(" %d",a[i]);

printf("\n");
}
9 8 5 3 2
8 9 5 3 2
5 8 9 3 2
3 5 8 9 2
2 3 5 8 9
2 3 5 8 9*/
温馨提示:答案为网友推荐,仅供参考
相似回答