标题:分享 冒泡排序
只看楼主
卢大大
Rank: 2
等 级:论坛游民
帖 子:4
专家分:10
注 册:2018-1-4
 问题点数:0 回复次数:3 
分享 冒泡排序
#include<stdio.h>
void main()
{
    int i,j,t,a[11];
    printf("请输入10个数:\n");                   //实现从小到大的排序
    for(i=1;i<11;i++)
        scanf("%d",&a[i]);
    for(i=1;i<10;i++)
        for(j=1;j<11-i;j++)
            if(a[j]>a[j+1])
            {
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
            printf("排序后的十个数:\n");
            for(i=1;i<=10;i++)
                printf("%5d",a[i]);
            printf("\n");
}
搜索更多相关主题的帖子: 分享 冒泡排序 printf for i++ 
2018-03-18 09:52
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
for(i=1;i<11;i++) 有点特别
为什么不用 for(i=0;i<10;i++) ?
2018-03-18 10:52
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
回复 2楼 吹水佬
以下是引用吹水佬在2018-3-18 10:52:51的发言:

for(i=1;i<11;i++) 有点特别
为什么不用 for(i=0;i<10;i++) ?



或者a[0]另有用处例如用来做哨兵什么的,当然这个程序没有这样的需要~

PS:修改一下交换变量代码可以这样:a[0]=a[j];a[j]=a[j+1];a[j+1]=a[0];

查过资料,赋值交换比异或交换效率要高那么一点,而且容易看懂,适用数据类型比较多,因此还是相对来说比较常见的~
还有i从1开始的确和我们平时的编程习惯不太一样,当然我还是看到某些小资料也是从i=1开始的,他们是有保留a[0]的习惯的,通常用于当哨兵~

还有堆排序下标从1开始会省事很多,就是这样~

[此贴子已经被作者于2018-3-18 15:40编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-03-18 11:36
lanke711
Rank: 9Rank: 9Rank: 9
来 自:流浪在天国之路
等 级:蜘蛛侠
威 望:7
帖 子:317
专家分:1437
注 册:2015-7-16
得分:0 
可能是我看的书比较少的原因。没有哨兵的i=1开始很少。这是编程习惯造成的吧。如非必要或者其它原因,都是i=0开始。。

普通人之所以普通,是因为他们普遍有一个通病,那就是认为自己永远普通。
千夫所指,我亦坚持。就算被所有人误解,我也照样守护这一切。
我们总是觉得,这些灵魂的表情,傲慢自大,目中无人,其实,真正目中无人的是我们。它们傲慢的不过是表情,而我们傲慢的却是行为!
记得,是为了忘记!
只要想着有那么一天,我就能忍受现在的每一天!
灾难并不可怕,可怕的是心中没有了希望。
你以为我在天堂,其实我正在路上。
当你觉得自己走不到终点的时候,请不要放弃。或许你的对手也是这种感觉。
2018-03-18 14:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-485367-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.275856 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved