首页 > 编程语言 >C语言程序设计 冒泡排序简介

C语言程序设计 冒泡排序简介

时间:2023-11-08 11:04:57浏览次数:45  
标签:12 20 46 冒泡排序 C语言 38 91 程序设计 74

冒泡排序基本思想
将n个记录看作按纵向排列,每趟排序时自下至上对每对相邻记录进行比较,若次序不符合要求(逆序)就交换。每趟排序结束时都能使排序范围内关键字最小的记录象一个气泡一样升到表上端的对应位置,整个排序过程共进行n-1趟,依次将关键字最小、次小、第三小…的各个记录“冒到”表的第一个、第二个、第三个…位置上。

   初态      第1趟   第2趟  第3趟  第4趟  第5趟  第6趟  第7趟
    38        12      12      12      12      12      12      12                              
    20        38      20      20      20      20      20      20
    46        20      38      25      25      25      25      25
    38        46      25      38      38      38      38      38
    74        38      46      38      38      38      38      38
    91        74      38      46      46      46      46      46
    12        91      74      74      74      74      74      74
    25        25      91      91      91      91      91      91

/*

Title:  冒泡排序

Author: Li Aimin

Date: May 2007

算法功能:冒泡排序算法实现将一个长度为n的线性表r上的所有元素按关键字升序排列。

*/

#include<stdio.h>


void bubblesort(int r[],int n)

 { /*elements are stored in r[1] to r[n]*/

  int i,j,flag;

  int temp;

  flag=1;

  i=1;

  while((i<n)&&(flag==1)) /*外循环控制排序的总趟数*/

   {  flag=0;

      for(j=n;j>i;j--) /*内循环控制一趟排序的进行*/ 

          if(r[j]<r[j-1])  /*相邻元素进行比较,若逆序就交换*/

           {

          flag=1;

              temp=r[j];

              r[j]=r[j-1];

              r[j-1]=temp;

           }

      i++;

    }

} /*bubblesort*/ 



void show(int  r[] , int n)

{

  /*elements are stored in r[1] to r[n]*/

  int i;

  for(i=1;i<=n;i++)

   printf(" %d ",r[i]);

  printf("\n"); 


}


void main()

{

 int a[9201],i;

 for(i=0;i<9201;i++)

     a[i]=9201-i;

 //show(a,100000);

 bubblesort(a,9200);

 show(a,9200);

}

标签:12,20,46,冒泡排序,C语言,38,91,程序设计,74
From: https://blog.51cto.com/emanlee/8246605

相关文章

  • C语言程序设计 练习题参考答案 第三章 (2) 选择结构
    /*3.6求3个数中最大值。类似于例1.2*/#include<stdio.h>voidmain(){inta,b,c,max;printf("\n请输入3个整数,整数以空格分隔:\n");scanf("%d%d%d",&a,&b,&c);if(a>b)max=a;elsemax=b;if(max......
  • C语言程序设计 求阶乘递归函数调用示例
    ......
  • C语言程序设计 试卷试题结构
    每套试卷结构如下:、填空(10题,2分/题)20分、阅读程序写运行结果(7小题,5分/题)35分、补充程序题(8空,2分/空,补充函数或主程序1题,4分)20分、程序改错题(错误点5个)10分、编程题(2小题)15分(5+10)每套试卷要求覆盖的知识点(三大基本程序结构、函数、数组、指针、文件、结构体)......
  • C语言程序设计 练习题参考答案 第七章 (1) 指针与变量 指针与数组
    /*7.13输入三个整数,从小到大排序,(指针,函数实现交换)*/#include"stdio.h"#include"conio.h"voidswap(int*a,int*b,int*c);voidmain(){intx,y,z;printf("请输入三个整数,示例123\n");scanf("%d%d%d",&x,&y,&am......
  • C语言程序设计 第七章 指针与结构体 指针数组 例题
    /*---------------------------------------例7.19输入N个学生学号,姓名,成绩,并按成绩降序排列,并输出p指向结构体变量s1,则s1.成员名,(*p).成员名,p->成员名等价。本题采用自定义函数较为合适Author:emanleeDate:2008-05-12----------------......
  • C语言程序设计 练习题参考答案 第七章 (2) 指针与数组 main函数形参
    /*7.16实现测试字符串长度函数strlen()*/#include"stdio.h"intstrlen(char*p);voidmain(){chars1[20]="s1s2s3s4";char*p=s1;printf("s1的长度:%d\n",strlen(s1));printf("s1的长度:%d\n",strlen(p));......
  • C语言程序设计 ASCII美国标准信息交换标准码 简介
    美国标准信息交换标准码(AmericanStandardCodeforInformationInterchange,ASCII)      在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机比较傻,只有0和1两位数的二进制比较适合于它使用),同样的,象a、b、c、d这样的52个字母(包括大写)、以及0、1、2......
  • C语言程序设计 运算符的优先级与结合性
     C运算符的优先级与结合优先级运算符含义参与运算对象的数目结合方向 1()[]->.圆括号运算符下标运算符指向结构体成员运算符结构体成员运算符双目运算符双目运算符双目运算符自左至右2!~+......
  • C语言程序设计 文件操作函数
    文件操作函数C语言(FILEfputcfgetcfputsfgetsfscanffprintf)在ANSIC中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。一、流式文件操作这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下:typedefstruct{intlevel;/*fill/empt......
  • C语言程序设计 练习题参考答案 第八章 文件(1)
    /*8.5从键盘输入一行字符,将其中小写字母转换为大写字母*/#include"stdio.h"voidmain(){FILE*fp;charch;if((fp=fopen("c:\\ex85.txt","w"))==NULL){printf("不能创建文件c:\\ex85.txt");exit(1);......