C语言数据结构冒泡排序算法

/*
*交换排序算法
*冒泡排序
*改进的冒泡排序算法 (优点可以降低时间复杂度)
*/

#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循环结束代表序列已经有序

        }//循环次数  和每次遍历的次数的关系是 循环次数比每次遍历的次数大一

    }
}

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值