/*
*交换排序算法
*冒泡排序
*改进的冒泡排序算法 (优点可以降低时间复杂度)
*/
#include<stdio.h>
#include<stdlib.h>
void bubble_sort(int *s,int n);//简单的冒泡排序函数
void up_bubblesort(int *s,int n);//改进的冒泡排序 可以降低时间复杂度
void main()
{
int m;
int i;
int n[100];
printf("请输入数据的个数:\n");
scanf("%d",&m);
printf("请依次输入数据:\n");
for(i=0;i<m;i++)
scanf("%d",&n[i]);
printf("\t\t========简单的冒泡排序算法的结果为========\n");
bubble_sort(n,m);//递减排序
for(i=0;i<m;i++)
printf("%d\t",n[i]);
printf("\n");
printf("\t\t========改进的冒泡排序算法的结果为========\n");
up_bubblesort(n,m);//递增排序
for(i=0;i<m;i++)
printf("%d\t",n[i]);
printf("\n");
}
void bubble_sort(int *s,int n)
{
int i,j;//循环变量
int t;
//递减排序
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if(s[j]<s[j+1])
{
t=s[j];
s[j]=s[j+1];
s[j+1]=t;//交换数据
}
}
}
void up_bubblesort(int *s,int n)//递增排序
{
int i;
int t;
i=n-1;//控制循环次数的变量
int j;
int flag;//循环结束的标志
while(flag)
{
flag=0;
for(j=0;j<n;j++)
if(s[j]>s[j+1])
{
t=s[j];
s[j]=s[j+1];
s[j+1]=t;
flag=1;//代表for循环继续进行 while循环结束代表序列已经有序
}//循环次数 和每次遍历的次数的关系是 循环次数比每次遍历的次数大一
}
}