c语言编程:对10个数冒泡排序(升序)。

如题所述

#include <stdio.h>

int main(){  

int number[10] = {95, 45, 15, 78, 84, 51, 24, 12,34,23};

for (int j = 0; j < 9; j++)

for (int i = 0; i < 9 - j; i++)  {

if(a[i] > a[i + 1])    {

                  int temp = a[i];

a[i] = a[i + 1];

a[i + 1] = temp;  }  

}

for (int i = 0; i < 10; i++)  {

printf(“%d”,a[i]);     }

}

扩展资料:

常见排序算法

快速排序、希尔排序、堆排序、直接选择排序不是稳定的排序算法,而基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法。

插入排序

已知一组升序排列数据a[1]、a[2]、……a[n],一组无序数据b[1]、b[2]、……b[m],需将二者合并成一个升序数列。

首先比较b[1]与a[1]的值,若b[1]大于a[1],则跳过,比较b[1]与a[2]的值,若b[1]仍然大于a[2],则继续跳过,直到b[1]小于a数组中某一数据a[x],则将a[x]~a[n]分别向后移动一位,将b[1]插入到原来a[x]的位置这就完成了b[1]的插入。

b[2]~b[m]用相同方法插入。

快速排序

快速排序是大家已知的常用排序算法中最快的排序方法。已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。首先任取数据a[x]作为基准。

比较a[x]与其它数据并排序,使a[x]排在数据的第k位,并且使a[1]~a[k-1]中的每一个数据<a[x],a[k+1]~a[n]中的每一个数据>a[x],然后采用分治的策略分别对a[1]~a[k-1]和a[k+1]~a[n]两组数据进行快速排序。

希尔排序

已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。

首先取一增量d(d<n),将a[1]、a[1+d]、a[1+2d]……列为第一组,a[2]、a[2+d]、a[2+2d]……列为第二组……,a[d]、a[2d]、a[3d]……列为最后一组以次类推,在各组内用插入排序,然后取d'<d,重复上述操作,直到d=1。

参考资料:排序-百度百科

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-07-08
代码示例如下,以数组a为例:
#include <stdio.h>
#define SIZE 10
int main()
{
int a[SIZE]={12 ,43,9,13,67,98,101,89,3,35};
int i,j,t;
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j+1];
a[j+1]=a[j];
a[j]=t;
}
}
}
for(i=0;i<10;i++)
printf("%d ",a[i]);
return 0;
}
拓展资料
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名“冒泡排序”。
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。本回答被网友采纳
第2个回答  2015-12-18

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。

冒泡排序流程:它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

参考代码:

#include<stdio.h>
int main()
{
   int a[10],i,j,t;
   for(i=0;i<10;i++);
   scanf("%d",&a[i]);
   for(j=0;j<9;j++)
     for(i=0;i<=8-j;i++)
        if(a[i]>a[i+1])
        {
          t=a[i];
          a[i]=a[i+1];
          a[i+1]=t;
        }
     for(i=0;i<10;i++)
      printf("%d ",a[i]);
   return 0;
}
/*
运行结果:
2 3 5 4 1 9 8 7 6 0
0 1 2 3 4 5 6 7 8 9
*/

第3个回答  2019-11-13
//以下以四个数字的给举例,便于理解;
#include <stdio.h>
main()
{
int i; //定义i变量,i代表外层for循环--比较轮数;
int k; //定义k变量,k代表内层for循环--比较次数;
int t; //定义t变量,t代表临时变量,临时存放比较的结果中较大的数字,通过赋值的方式切换数字的排序;
int a[] = {30,3,6,10}; //定义数组,数组是本次要排序的数字组合;注意此处数组中一共4个数字所以 理论上是 a[4]={30,3,6,10};
//初试化i=1;并判断i是否小于等于3; 如果符合条件 那么进入for循环;(4个数字,两两对比需要进行3轮对比,i就代表了轮数;i需要经过 1,2,3 三轮的赋值;i=4的时候会跳出for循环)
for(i=1; i<=3; i++){ 
//初试化k=0;并判断k是否小于等于3 -i; 如果符合条件 那么进入for循环;第一轮的时候数组一共4个数字所以需要对比3次;第二轮还有3个数字需要对比2次;第三轮仅剩2个数字需要对比1次;(特:当k=0的时候是第一次对比;k从0开始赋值是为了在for循环内当数组的键值使用;)
for(k=0; k<=3-i; k++){ 
//判断a[K] 的数字  是否 大于 a[K + 1 ] 的数字;假设当前是第一轮第一次对比那么a[K=0] = 30,a[K=0 + 1] = 3;
if(a[k] > a[k+1]){ 
t = a[k];  //对上一步判断结果进行进一步处理,因为a[K] > a[K + 1 ] , 所以把a[K] 赋值给临时变量以便于 后续把这个大的数字向后平移;
a[k] = a[k+1]; //a[K + 1 ]是比较结果中比较小的数字,所以需要向前靠,向前靠就是要赋值给 a[K];空出 a[K + 1 ]便于下一步接收 较大的数字  a[K];
a[k+1] = t;  //a[K + 1 ] 接收 较大的数字  a[K];
}
}
}
for(i=0; i<4; i++){//初试化i=0;并判断i是否小于4; 如果符合条件 那么进入for循环,i在for内做键值使用:
printf("第 %d个数字为:%d\n",i+1,a[i]);
}
}
/* 
运行结果如下:
第 1个数字为:3
第 2个数字为:6
第 3个数字为:10
第 4个数字为:30
*/

第4个回答  2020-05-07
//冒泡排序,假设有n个数,需要n-1趟排序
//其中,第i趟需要 n-i次排序
#include<stdio.h>
int main(void)
{
int a[5]={5,7,9,8,1};
int i,j,w;
printf("输入5个数:%d\n",a[5]);

/*for(i=0;i<5;i++)
{
scanf("%d",&a[i]);//扫描输入5个数
}*/
//使用2层循环
for(i=1;i<=5-1;i++) //趟
{
for(j=0;j<5-i;j++) //第i趟
{

if(a[j]>a[j+1])
{//从大到小排序
w=a[j];
a[j]=a[j+1];
a[j+1]=w;
}
}
}
for(i=0;i<5;i++)
printf("%4d",a[i]);
return 0;
}

C语言:采用冒泡排序方法,对10个数按由小到大的的顺序排序
include<stdio.h> int main(){ int i,j,t,a[10]={5,4,8,3,6,9,7,222,64,88};\/\/排序 for(i=1;i<10;i++)\/\/外循环控制排序趟数,n个数排n-1趟 { for(j=0;j<10-1;j++)\/\/内循环每趟比较的次数,第j趟比较n-i次 { if(a[j]>a[j+1])\/\/相邻元素比较,逆序则交换 ...

c语言编程:对10个数冒泡排序(升序)。
int main(){ int number[10] = {95, 45, 15, 78, 84, 51, 24, 12,34,23};for (int j = 0; j < 9; j++)for (int i = 0; i < 9 - j; i++) { if(a[i] > a[i + 1]) { int temp = a[i];a[i] = a[i + 1];a[i + 1] = temp; } } fo...

用C语言,随机输入10个整数,用冒泡排序法对这些整数进行从小到大排序...
int b[10]={9,10,11,12,1,2,3,4,0,1};int c[10]={1,2,3,4,13,14,15,16,2,3};int i;printf("请输入待排序的10个数:");for(i=0;i<10;i++){ scanf("%d",&a[i]);} fun(a);printf("\\n排序后的数列如下:\\n");for(i=0;i<10;i++){ printf("%2d ",a[i...

C语言:编写一个程序用冒泡排序实现升序排列
a[9]=3 a[10]=99 由小到大的顺序为:1,2,3,4,5,6,7,8,9,99。冒泡排序算法的原理如下:1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。2、对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3、针对所有的元素重复...

C语言:冒泡排序法将数组中10个元素从小到大排序,并找出最小值?_百度...
这段代码包含了冒泡排序算法,用于将数组中的元素从小到大排序,并寻找数组中的最小值。代码首先读取10个整数,然后初始化最小值`min`为数组的第一个元素。接下来,通过一个循环遍历数组,用一个if语句来更新`min`,如果找到一个比当前`min`小的值,就更新它。之后,冒泡排序的逻辑开始执行。这里使用...

...对10个整数进行冒泡排序(要求排成升序c语言编写
include <stdio.h> void main(){ int i,j;float a[10],t;printf("请输入十个数字");for(i=0;i<10;i++){ scanf("%f",&a[i]);} for(j=0;j<10;j++){ for(i=0;i<10-1;i++){ if(a[i]>a[i+1]){ t=a[i];a[i]=a[i+1];a[i+1]=t;} } } for(i=0;i<...

C语言 随机输入十个数 能把它们从大到小排列出来的程序怎么写?_百度...
可以采用冒泡排序~include <stdio.h>#define elemType int \/*元素类型*\/#define ASC 0 \/*升序*\/#define DESC 1 \/*降序*\/#define LEN 100 \/*数组长度*\/\/*录入数组*\/void inputArr (elemType arr[], int len) {int i;for (i=0; i<len; i++)scanf ("%d",&arr[i]);putchar ('\\...

C语言:写一函数,用“冒泡法”对输入的10个字符按由小到大顺序排列_百度...
冒泡排序需要用到两层循环,第一层循环遍历数组中的元素,第二层则进行两两比较,如果顺序不对就要对其进行换位,直到排序完成:4、最后执行程序观察结果,按下crtl+F5弹出程序,随意输入10个数,按下回车键执行结果,此时就可以看到排序后的结果了。以上就是c语言冒泡排序程序的演示:...

输入10个数,用冒泡排序法按由小到大顺序排序并输出??c语言的
冒泡排序的程序代码如下:include<stdio.h> int main(){ int a[10]={0};int i=0,j=0,t=0;for(i=0;i<10;i++){scanf("%d",&a[i]);} for(i=0;i<10;i++){for(j=0;j<10-i;j++){ if(a[j]>a[j+1]){ t=a[j];a[j]=a[j+1];a[j+1]=t;}}} for(i=0;i...

在c语言编程中如何将1-10的数从小到大排列。
冒泡法:顾名思义,就是把小的数据向前排,也就是向上浮起,并因此进行排序。例:include "stdio.h" 包含头文件 void main() 主函数 { int a[10],t,i,j; 定义要用的数据和数祖 printf("input the ten number:\\n"); 显示输出 for(i=0;i<10;i++)scanf("%d",&a[i]); 利用循环...

相似回答