文档章节

冒泡排序

 倒吊的蜗牛
发布于 2015/01/09 23:31
字数 558
阅读 8
收藏 0

一,排序之前的简单介绍,

1. 输入两个数,按代数值由小到大的顺序输出这两个数。

#include <stdio.h>
#include <stdlib.h>
int main()
{
    float a, b, t;
    scanf("%f %f", &a, &b);
    if(a > b)
    {
        t = a;
        a = b;
        b = t;
    }
    printf("%5.2f, %5.2f\n", a, b);
}

输入:5.444 1.222

输出:1.22 5.44

解析:设置一个中间变量来交换两个数的值。

2. 输入3个数a,b,c;要求按由小到大的顺序输出。

#include <stdio.h>
#include <stdlib.h>
int main()
{
    float a, b, c, t;
    scanf("%f %f %f", &a, &b, &c);
    /* 实现 a 和 b 的交换*/
    if(a > b)
    {
        t = a;
        a = b;
        b = t;
    }
    /* 实现 a 和 c 的交换*/
    if(a > c)
    {
        t = b;
        b = c;
        c = t;
    }
    if(b > c)
    {
        t = b;
        b = c;
        c = t;
    }
    printf("%5.2f, %5.2f, %5.2f\n", a, b, c);
}

解析:3个数要交换3次,那么10个数两两交换要多少次,显然这种方法不合适了,

这就是算法的重要性了,接下来说说冒泡排序。

二、冒泡排序

算法要求:用起泡法对10个整数按升序排序。

算法分析:如果有n个数,则要进行n-1趟比较。在第1趟比较中要进行n-1次相邻元素的两两比较,在第j趟比较中要进行n-j次两两比较。比较的顺序从前往后,经过一趟比较后,将最值沉底(换到最后一个元素位置),最大值沉底为升序,最小值沉底为降序。

1. 用数组实现

#include <stdio.h>
#include <stdlib.h>
#define N 10
int main()
{
    int arr[N] = {0};
    int i=0, j=0,tmp=0;
    printf("Please input 10 numbers:\n");
    for(i=0;i<N;i++)
    {
        scanf("%d", &arr[i]);
    }
    for(j=0; j < N-1; j++)
    {
        for(i=0; i < N-1-j;i++)
        {
            if(arr[i] > arr[i+1])
            {
                tmp      = arr[i];
                arr[i]   = arr[i+1];
                arr[i+1] = tmp;
            }
        }
    }

    printf("the sorted numbers:\n");
    for(i=0;i<N;i++)
    {
        printf("%d ",arr[i]);
    }
    printf("\n");
    return 0;
}

2. 用指针实现

#include <stdio.h>
#include <stdlib.h>
#define N 10
int main()
{
    int arr[N] = {0};
    int i=0, j=0;
    int *p=NULL, *tmp=NULL;
    p = arr;
    printf("Please input 10 numbers:\n");
    for(i=0;i<N;i++)
    {
        scanf("%d", p+i);
    }

    for(j=0; j < N-1; j++)
    {
        for(i=0; i < N-1-j;i++)
        {
            if(*(p+i) > *(p+i+1))
            {
                tmp      = *(p+i);
                *(p+i)   = *(p+i+1);
                *(p+i+1) = tmp;
            }
        }
    }

    printf("the sorted numbers:\n");

    for(i=0;i<N;i++)
    {
        printf("%d ",*p++);
    }
    printf("\n");
    return 0;
}























© 著作权归作者所有

粉丝 0
博文 6
码字总数 2744
作品 0
大连
私信 提问
动画:如何给面试官写一个满意的冒泡排序

写在前边 对于冒泡排序,很多小伙伴已经可以说很熟悉了,顺手就可以写出来,但对于一个初学者来说,小鹿想通过这篇文章,让你一次性就理解冒泡排序以及冒泡排序的优化,就不用去翻看其他文章...

一个不甘平凡的码农
10/08
0
0
排序算法篇_冒泡排序法

image   冒泡排序法(Bubble Sort)是所有排序算法中最简单、最基本的一种。冒泡排序法的思路就是交换排序,通过相邻数据的交换来达到排序目的。 冒泡排序算法 冒泡排序算法通过多次比较和...

一笑小先生
2018/01/28
0
0
iOS冒泡排序

冒泡排序算法顾名思义,经过每一次排序算法之后,最大的泡泡(数)会飘到最上面,第二次排序之后,第二大的泡泡(数)飘到倒数第二的位置 ..... 以此类推,直至完成从小到大的排序。 冒泡排序...

zh_iOS
2018/02/06
48
0
面试 9:Java 玩转冒泡排序

面试 9:用 Java 实现冒泡排序 南尘的朋友们,新的一周好,原本打算继续讲链表考点算法的,这里姑且是卡一段。虽然在我们 Android 开发中,很少涉及到排序算法,因为基本官方都帮我们封装好了...

nanchen2251
2018/07/16
0
0
排序算法——冒泡排序VS插入排序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_26545305/article/details/87988991 一、概述 最经典、最常用的排序算法有:冒泡排序、插入排序、选择排序...

LemmonTreelss
03/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

3_数组

3_数组

行者终成事
44分钟前
7
0
经典系统设计面试题解析:如何设计TinyURL(二)

原文链接:https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
今天
7
0
使用logstash同步MySQL数据到ES

概述   在生成业务常有将MySQL数据同步到ES的需求,如果需要很高的定制化,往往需要开发同步程序用于处理数据。但没有特殊业务需求,官方提供的logstash就很有优势了。   在使用logstas...

zxiaofan666
今天
10
0
X-MSG-IM-分布式信令跟踪能力

经过一周多的鏖战, X-MSG-IM的分布式信令跟踪能力已基本具备, 特点是: 实时. 只有要RX/TX就会实时产生信令跟踪事件, 先入kafka, 再入influxdb待查. 同时提供实时sub/pub接口. 完备. 可以完整...

dev5
今天
7
0
OpenJDK之CyclicBarrier

OpenJDK8,本人看的是openJDK。以前就看过,只是经常忘记,所以记录下 图1 CyclicBarrier是Doug Lea在JDK1.5中引入的,作用就不详细描述了,主要有如下俩个方法使用: await()方法,如果当前线...

克虏伯
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部