您的位置:

冒泡排序c语言代码,冒泡排序C语言程序

本文目录一览:

输入10个数,用冒泡排序法按由小到大顺序排序并输出??c语言的

如下参考:

#包括 stdio, h

Intmain()

Inta[10]={0};

IntI=0,j=0,t=0;

For (I = 0;我 10;我+ +)

{scanf (" % d ", a [I]);}

For (I = 0;我 10;我+ +)

{for (j = 0;J 10 - I;J + +) {

If (a [j] a [j + 1))

T=a,[j]。

A[j]=A,A+1加到[j]。

A[m+1]=t;

}}}

For (I = 0;我 10;我+ +)

{printf("%d",a[I]);}

返回0;}

任意输入10个数据,程序运行:

扩展资料:

冒泡排序算法的复杂原理如下:

1.比较相邻metaelements。如果第一个比第二个大,就交换它们。

2.对每一对相邻的元素执行相同的操作,从第一对开始,到最后一对结束。此时,最后一个元素应该是最大的数。

3.对除最后一个元素之外的所有元素重复上述步骤。

4.每次对越来越少的元素重复上述步骤,直到没有一对数字可供比较。

求 c语言选择排序法和 冒泡排序法代码?

冒泡排序法的具体实现方法是这样的,从数组的第一个元素`arr[0]`开始,两两比较**(`arr[n],arr[n+1]`),如果前面的数大于后面的数(`arr[n] arr[n+1]`),那么交换两个元素的位置,把大的数往后移动。这样依次经过一轮比较以后,最大的数将会被交换到最后的位置(arr[n-1])。

C语言实现Bubblesort:

void bubblesort(int a[], int m)

    {

        int i,j;

        int tmp;

        int flag = 0;  //设定标志,如果第一次循环比较时没有发生交换,则说明数组是升序排序,不用排序,提前结束循环。

        for(i = 0; i  m; i++)  //外层循环控制循环次数

        {

            for(j = 0; j  m-1-i; j++)    //内层循环控制每次循环里比较的次数。

            {

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

                {

                    tmp = a[j];

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

                    a[j+1] = tmp;

                    flag = 1;

                }

            }

    

            if(0 == flag)

            {

                printf("No Sort\n");

                break;

            }

            }

    }

选择排序法的过程是,通**过比较,选择出每一轮中最值元素,然后把他和这一轮中最最前面的元素交换**,所以这个算法关键是要记录每次比较的结果,即每次比较后最值位置(下标)。

C语言实现(Selectionsort)

void selectionsort(int a[],int m)

    {

        int i,j;

        int k;

        int tmp;

        for(i = 0; i  m-1; i++)//控制循环次数,n个数需要n-1次循环

        {

            k = i;

            for(j = i+1; j  m ; j++)

            {

                if(a[j]  a[k])

                    k = j;

            }

            //i不等于k是就证明a[i]不是最小的,

            //i等于k时证明a[i]就是本轮比较过程中最小的值

            if(i != k)

            {

                tmp = a[i];

                a[i] = a[k];

                a[k] = tmp;

            }

        }

    }

冒泡排序的C语言代码

程序如下:

# include malloc.h

# include stdio.h

int main(void)

{

    int i, j, t,num;

int * p;

printf("请输入要排序的数的个数:num=");

scanf("%d", num);

p= (int *)malloc(num* sizeof(int));

//输入要排序的数

for (i=0; inum; ++i)

{

printf("请输入第%d个要排序的数p[%d]=\n", i+1,i);

scanf("%d", p[i]);

}

//冒泡排序

for (i=0; inum-1; ++i)

{

for (j=0; jnum-1-i; ++j)

{

if (p[j]  p[j+1])  // 表示升序 表示降序

{

t = p[j];

p[j] = p[j+1];

p[j+1] = t; 

}

}

}

//输出已经排序好的数

printf("输出已经排序好的数");

    for (i=0; inum; ++i)

{

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

}

printf("\n");

return 0;

}

程序运行结果:

随机输入十个数:

C语言冒泡排序法代码

冒泡排序每一趟排序把最大的放在最右边。

比如:

87 12 56 45 78

87和12交换:12 87 56 45 78

87和56交换:   56 87 45 78

87和45交换:      45 87 78

87和78交换:         78 87

到此第一趟排序结束,接下来的每一趟排序都是这样。

#includestdio.h

void Print(int *num, int n)

{

    int i;

    for(i = 0; i  n; i++)

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

    puts("\n");

    return;

}

void Bubble_Sort(int *num, int n)

{

    int i, j;

    for(i = 0; i  n; i++)

    {

        for(j = 0; i + j  n - 1; j++)

        {

            if(num[j]  num[j + 1])

            {

                int temp = num[j];

                num[j] = num[j + 1];

                num[j + 1] = temp;

            }

            Print(num, n);

        }

    }

    return;

}

int main()

{

    int num[8] = {87, 12, 56, 45, 78};

    Bubble_Sort(num, 5);

    return 0;

}

C语言冒泡排序法代码是什么?

所谓冒泡排序法,就是对一组数字进行从大到小或者从小到大排序的一种算法。

1、具体方法是,相邻数值两两交换。从第一个数值开始,如果相邻两个数的排列顺序与我们的期望不同,则将两个数的位置进行交换(对调);如果其与我们的期望一致,则不用交换。重复这样的过程,一直到最后没有数值需要交换,则排序完成。具体情况如下图所示:

2、为了实现效果,我们得先定义一组待排序的数列以及各个变量。具体情况如下图:

3、算法的实现,具体情况如图:

4、运行结果显示。具体情况如图:

5、按照上面的程序,在第五趟(i=5)起泡时,计算机不仅要对“1,5,6,4”两两进行比较并排序,还要对“7,8,9,13”进行两两比较并排序,而“7,8,9,13”在第四趟起泡时就已经排序好了,所以再进行比较的话,就显得非常多余。图示如下:

6、在上面程序的基础上进行优化。具体情况如图所示:

7、优化后的输出结果。如图所示:

C语言中选择排序法和冒泡排序法代码。

选择排序:

void select_sort(int a[],int n)        //传入数组的要排序的元素个数

{int i,j,min,t;

for(i=0;in-1;i++)

{  min=i;      //min:当前最小值下标

for(j=i+1;jn;j++)        //扫描余下的部分

if(a[min]a[j])        //若有其它元素更小,就记录其下标

min=j;

if(min!=i)        //保若最小值不在排序区首位,就换到首位

{t=a[min]; a[min]=a[i]; a[i]=t;}

}

}

冒泡排序:

void bubble_sort(int a[], int n)        //传入数组的要排序的元素个数

{ int i, j, t;

for (j=0; jn-1; j++)        //n个元素比较n-1轮

for (i= 0; in-1-j;i++)   //比较相信的两个数

if(a[i]a[i+1])          //若大小顺序不符,就交换

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

}