//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*/
温馨提示:答案为网友推荐,仅供参考