C语言简单冒泡法程序

如题所述

1、打开Visual stdio软件,在空项目里新建一个c语言程序空文件:

2、弹出的窗口选择C++文件,将文件扩展名改为“.c”点击添加完成新建c文件,之后就可以编写程序了:

3、这里从数组头部开始,不断比较相邻的两个元素的大小,让较大的元素逐渐往后移动(交换两个元素的值),直到数组的末尾,经过一轮的比较,就可以找到最大的元素,并将它移动到最后一个位置,然后依次类推直到数组的最后一个数比较完,最后输出结果;

4、最后需要执行程序,按下crtl+F5弹出程序的执行结果,就可以看到排序后的结果了:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-11-30

#include<stdio.h>

voidsort(int*a,intlen)

{inti=0;

intj;

intt;

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

{

for(j=0;j<len-i-1;j++)

{

if(a[j]>a[j+1])

{

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

}

}

}

intmain(intargc,char*argv[])

{

inta[10]={

-999,2,3,77,12,88,0,-8,99,100

};

inti=0;

sort(a,10);

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

{

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

}

return0;

}

扩展资料

冒泡排序法

#include"stdio.h"

voidmain()

{

inta[10];

inti,j,temp;

//输入10个整型数据

printf("Pleaseinputtennumbers:\n");

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

scanf("%d",&a[i]);

//排序

for(i=0;i<9;i++)//10个数,10-1轮冒泡,每一轮都将当前最大的数推到最后

{

for(j=0;j<9-i;j++)//9-i,意思是每当经过一轮冒泡后,就减少一次比较

if(a[j]>a[j+1])

{

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

}

//打印排序结果

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

printf("%d\n",a[i]);

return0;

}

本回答被网友采纳
第2个回答  推荐于2018-02-26

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

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

参考代码:

#include <stdio.h>
void sort(int a[], int n)//冒泡排序算法 
{
    int i, j, temp;
    for (j = 0; j < n - 1; j++)
        for (i = 0; i < n - 1 - j; i++)
        {
            if(a[i] > a[i + 1])
            {
                temp = a[i];
                a[i] = a[i + 1];
                a[i + 1] = temp;
            }
        }
}
 
int main()
{
    int i,a[10] = {1,9,5,4,7,2,0,6,3,8};
    printf("排序前:");
    for(i=0;i<10;i++)
     printf("%d ",a[i]);
    sort(a, 10);//调用排序函数 
    printf("\n排序后:");
    for(i=0;i<10;i++)
     printf("%d ",a[i]);
    printf("\n");
}
/*
排序前:1 9 5 4 7 2 0 6 3 8
排序后:0 1 2 3 4 5 6 7 8 9
*/

第3个回答  2012-03-01
//采用冒泡排序法对一组数据进行由小到大排序
#include <stdio.h>
#define M 10
//冒泡排序法
int pop_method(int marr[])
{
int i = 0;
int j = 0;
int tmp = 0;

for (i = 0; i < M ; i++)
{
for(j = 0; j < M - 1 -i; j++)
{
if (marr[j] > marr[j + 1] )
{
tmp = marr[j];
marr[j] = marr[j + 1];
marr[j + 1] = tmp;
}
}
}
return 0;
}
int main(void)
{
int i = 0;
int marr[10] = {34, 10, 3, 0, -12, 43, 21, -4, 5, -16};
pop_method(marr);
//打印排序后的数组
printf("排序后的数组\n");
for (i = 0; i < M; i++)
{
printf("%4d", marr[i]);
}
printf("\n");
return 0;
}
第4个回答  推荐于2017-11-25
#include <stdio.h>
#define N 10
void main()
{
int a[N] = {5, 4, 7, 2, 8, 3, 1, 9, 1, 6};
int i, j, temp;
int flag = 1;
for (i = 0; i < N - 1 && flag == 1; i++)
{
flag = 0;
for (j = 0; j < N - i - 1; j++)
{
if (a[j + 1] < a[j])
{
temp = a[j + 1];
a[j + 1] = a[j];
a[j] = temp;
flag = 1;
}
}
}
for (i = 0; i < N; i++)
{
printf("%d ", a[i]);
}
}本回答被提问者和网友采纳
相似回答