排序算法(更新ing)(C语言实现)(认真的不像实力派)

本文详细介绍了冒泡排序的基本思想及其实现过程,并通过具体的例子展示了排序的过程。此外,还提供了一个简单的C语言程序来实现冒泡排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么要总结排序算法:

由于时而要用到排序的思想,这里慢慢总结吧,以前也看的不少,但是荒废久了,也就忘得差不多了,这里贴出供需要的人看吧。互联网虽好,但有时候资源良莠不齐,看的也是头疼,不如总结来供自己查阅。

定位:排序是一种重要的,基本的算法。

1、冒泡(起泡)法排序(2018/06/04 pm 17:20):

基本思路:每次将相邻的两个数比较,将小的调到前头。若有6个数:9    8    5    4    2    0;比较过程如下图:

第一趟比较:

9


8

8

8

8

8

8

9


5

5

5

5

5

5

9


4

4

4

4

4

4

9


2

2

2

2

2

2

9


0

0

0

0

0

0

9

第1次

第2次

第3次

第4次

第5次

结果

第1次:先将最前面的两个数(8和9)比较大小,小的浮上去,大的沉下去;

第2次:将第2和第3个数(9和5)比较,同理,小的浮上去,大的沉下去;

如此进行5次,得到8  5  4  2  0  9 的顺序,可以看到最大的数9已经“沉底”。其他数各自向上浮起一个位置。

第二趟:

8


5

5

5

5

5

8


4

4

4

4

4

8


2

2

2

2

2

8


0

0

0

0

0

8

第1次

第2次

第3次

第4次

结果

然后进行第2趟比较,对余下的5个数(8 5 4 2 0)进行新一轮的比较,以便使次大的数“沉底”。

方法同第1趟,如上表示,经过4次比较,得到次大的数8。

规律总结:

按如此规律进行下去,可以推知,对6个数进行冒泡排序,要比较5趟,才能使6个数按大小排序。

在第1趟要进行两个数之间的比较共5次,在第2趟过程中比较4次,..........,在第5趟只需比较1次。

规律升华:

如果有n个数,则要进行n-1趟比较。在第1趟比较中要进行n-1次两两比较,在第j趟比较中要进行n-j次两两比较。

下面给出简单c程序:

#include <stdio.h>
int main()
{
    int a[10]; //此数组用于存放输入数据
    int i, j; //循环变量
    int t; //中间变量
    printf("input 10 numbles:\n");  //输入数据提示
    for(i = 0; i < 10; i ++)
        scanf("%d", &a[i]);
    printf("\n");
    //冒泡排序部分
    for(j = 0; j < 9; j ++)   //进行9次循环,实现9趟比较
        for(i = 0; i < 9 - j; i ++)  //在每一趟中进行 9 - j 次比较
            if(a[i] > a[i + 1])
            {
                t = a[i];
                a[i] = a[i + 1];
                a[i + 1] = t;
            }
    printf("the sorted numbers:\n");//排序输出
    for(i = 0; i < 10; i ++)
        printf("%d  ", a[i]);
    printf("\n");
    return 0;
}

Code::Blocks中运行结果如下:

input 10 numbles:

15 25 12 36 52 21 15 45 52 61

the sorted numbers:

12  15  15  21  25  36  45  52  52  61

持续更新中......



关于排序的好文推荐

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李锐博恩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值