冒泡排序的实例(以及冒泡排序的优化)

前言

题目

图片[1],冒泡排序的实例(以及冒泡排序的优化),网络安全爱好者中心-神域博客网

先附上两位朋友的冒泡解析:

By:Settingsun

By:灰太狼

118普通答案+解析

有什么不懂可以问我

#include <stdio.h>
void insert(int a[],int n,int num)
{ int t; //定义一个中间变换值用来达到a[j]和a[j}+1的顺序替换
a[n] =num;
n=n+1; //插入一个数,需给他加一
for(int i=0;i<n;i++) //这里不是n-1 因为这里不是数组是循环几次
{
for(int j=0;j<n-1;j++) //n-1 因为数组是从0开始
{
if(a[j]>a[j+1]) //下面就是简单的替换顺序
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
void printarr(int a[],int n)
{
for(int h=0;h<n+1;h++)
{
printf("%d",a[h]);
if(h<n)
{
printf(" "); //这里是输入空格 如果直接输出空格的话,第一个数会有空格
}
}
}
int main()
{
int n;
scanf("%d",&n);
int a[n];
for(int h=0;h<n;h++)
{
scanf("%d",&a[h]);
}
int num;
scanf("%d",&num);
insert(a,n,num); //调用函数
printarr(a,n); //这里也是调用
return 0;
}
#include <stdio.h>
void insert(int a[],int n,int num)
{     int t; //定义一个中间变换值用来达到a[j]和a[j}+1的顺序替换
  a[n] =num;
  n=n+1; //插入一个数,需给他加一
  for(int i=0;i<n;i++)  //这里不是n-1 因为这里不是数组是循环几次
  {
    for(int j=0;j<n-1;j++) //n-1 因为数组是从0开始
    {
      if(a[j]>a[j+1])  //下面就是简单的替换顺序
      {
        t=a[j];
        a[j]=a[j+1];
        a[j+1]=t;
      }
    }
  }
}
void printarr(int a[],int n)
{
  for(int h=0;h<n+1;h++)
  {
    printf("%d",a[h]);
    if(h<n)
    {
      printf(" ");  //这里是输入空格 如果直接输出空格的话,第一个数会有空格
    }
   } 
}
int main()
{
  int n;
  scanf("%d",&n);
  int a[n];
  for(int h=0;h<n;h++)
  {
    scanf("%d",&a[h]);
  }
  int num;
  scanf("%d",&num);
  insert(a,n,num); //调用函数
  printarr(a,n);  //这里也是调用
  return 0;
   
}
#include <stdio.h> void insert(int a[],int n,int num) { int t; //定义一个中间变换值用来达到a[j]和a[j}+1的顺序替换 a[n] =num; n=n+1; //插入一个数,需给他加一 for(int i=0;i<n;i++) //这里不是n-1 因为这里不是数组是循环几次 { for(int j=0;j<n-1;j++) //n-1 因为数组是从0开始 { if(a[j]>a[j+1]) //下面就是简单的替换顺序 { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } } void printarr(int a[],int n) { for(int h=0;h<n+1;h++) { printf("%d",a[h]); if(h<n) { printf(" "); //这里是输入空格 如果直接输出空格的话,第一个数会有空格 } } } int main() { int n; scanf("%d",&n); int a[n]; for(int h=0;h<n;h++) { scanf("%d",&a[h]); } int num; scanf("%d",&num); insert(a,n,num); //调用函数 printarr(a,n); //这里也是调用 return 0; }
118优化答案加解析

这里的优化目的是增加运行速度

#include <stdio.h>
void insert(int a[],int n,int num)
{ int t; //定义一个中间变换值用来达到a[j]和a[j}+1的顺序替换
a[n] =num;
n=n+1; //插入一个数,需给他加一
for(int i=0;i<n;i++) //这里不是n-1 因为这里不是数组是循环几次
{ int flag=1;//定义一个标识符
for(int j=0;j<n-1;j++) //n-1 因为数组是从0开始
{
if(a[j]>a[j+1]) //下面就是简单的替换顺序
{ flag=0;//改变标识符
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
if(flag==1){ //如果标识符等于1那就不用进行循环了
break;}
}
}
void printarr(int a[],int n)
{
for(int h=0;h<n+1;h++)
{
printf("%d",a[h]);
if(h<n)
{
printf(" "); //这里是输入空格 如果直接输出空格的话,第一个数会有空格
}
}
}
int main()
{
int n;
scanf("%d",&n);
int a[n];
for(int h=0;h<n;h++)
{
scanf("%d",&a[h]);
}
int num;
scanf("%d",&num);
insert(a,n,num); //调用函数
printarr(a,n); //这里也是调用
return 0;
}
#include <stdio.h>
void insert(int a[],int n,int num)
{     int t; //定义一个中间变换值用来达到a[j]和a[j}+1的顺序替换
  a[n] =num;
  n=n+1; //插入一个数,需给他加一
  for(int i=0;i<n;i++)  //这里不是n-1 因为这里不是数组是循环几次
  {        int flag=1;//定义一个标识符
    for(int j=0;j<n-1;j++) //n-1 因为数组是从0开始
    {
      if(a[j]>a[j+1])  //下面就是简单的替换顺序
      {   flag=0;//改变标识符
        t=a[j];
        a[j]=a[j+1];
        a[j+1]=t;
      }
    }
        if(flag==1){ //如果标识符等于1那就不用进行循环了
        break;}
  }  
}
void printarr(int a[],int n)
{
  for(int h=0;h<n+1;h++)
  {
    printf("%d",a[h]);
    if(h<n)
    {
      printf(" ");  //这里是输入空格 如果直接输出空格的话,第一个数会有空格
    }
   } 
}
int main()
{
  int n;
  scanf("%d",&n);
  int a[n];
  for(int h=0;h<n;h++)
  {
    scanf("%d",&a[h]);
  }
  int num;
  scanf("%d",&num);
  insert(a,n,num); //调用函数
  printarr(a,n);  //这里也是调用
  return 0;
   
}
#include <stdio.h> void insert(int a[],int n,int num) { int t; //定义一个中间变换值用来达到a[j]和a[j}+1的顺序替换 a[n] =num; n=n+1; //插入一个数,需给他加一 for(int i=0;i<n;i++) //这里不是n-1 因为这里不是数组是循环几次 { int flag=1;//定义一个标识符 for(int j=0;j<n-1;j++) //n-1 因为数组是从0开始 { if(a[j]>a[j+1]) //下面就是简单的替换顺序 { flag=0;//改变标识符 t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } if(flag==1){ //如果标识符等于1那就不用进行循环了 break;} } } void printarr(int a[],int n) { for(int h=0;h<n+1;h++) { printf("%d",a[h]); if(h<n) { printf(" "); //这里是输入空格 如果直接输出空格的话,第一个数会有空格 } } } int main() { int n; scanf("%d",&n); int a[n]; for(int h=0;h<n;h++) { scanf("%d",&a[h]); } int num; scanf("%d",&num); insert(a,n,num); //调用函数 printarr(a,n); //这里也是调用 return 0; }
------本文已结束,感谢您的阅读------
THE END
喜欢就支持一下吧
点赞7 分享
May we all have the power to love ourselves and others.
愿我们,都有能力爱自己,有余力爱别人
评论 共4条

请登录后发表评论