美文网首页
最简单的排序算法

最简单的排序算法

作者: 云苒说 | 来源:发表于2018-03-13 13:11 被阅读0次

一提到算法,大部分人的第一反应都是排序。实在是排序算法太经典了,感觉能独占算法的半壁江山。无论是算法课,还是笔试面试,排序算法都是必须掌握的基本内容。而提到算法,绝大多数人,哪怕是研究生毕业的,高学历的人才,最爱的就是“冒泡排序”,为啥啊?简单呗!冒泡排序实在是大名鼎鼎啊,就算我没接触算法和数据结构时,我都如雷贯耳,排序只知“冒泡”而不知其他。但是其实冒泡还不算最简单。现在来说一说最简单的排序:桶排序。

桶排序,一句话概括,就是“一个萝卜一个坑”。假设我们要给一组100以内的数排序,比如3,90,3,9,1,7,34... ...等等吧,瞎写一通,只要在100以内就行。那我们首先得需要100个空“桶”,编号1~100,用来存放它所对应的数的个数。好了,现在这100个空桶已经按照1到100的编号摆好位置了,并且全部初始化为0。接下来开始往里面放东西了。来一个数就把它放到它所对应的的那个编号的桶里。比如来了一个3,就把它放到3号桶里,3号桶就由0变成了1;又来了一个90,就把它放到90号桶里,90号桶由0变成了1;又来了一个3,把它放到3号桶里,3号桶由1变成了2... ...就这样把所有的数都放到桶里。

输出就简单多了,其实把所有数装完,就相当于排好序了。假设要从小到大输出,就从1号桶到100号桶依次把数取出来就行了。

代码如下:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    //freopen("input.txt","r",stdin);
    int a;
    int arr[101];
    memset(arr,0,sizeof(arr));//把arr数组清0
    while(scanf("%d",&a)==1)//来一个数就把它放到桶里。这里注意如果输入不用文件的话,输入结束要按ctrl+z+enter告诉系统输入结束。
        arr[a]++;

    int i,j;
    for(i=1;i<=100;i++)//循环判断arr1到arr100
        for(j=1;j<=arr[i];j++)//每个桶里有几个数就输出几次
            printf("%d ",i);

    return 0;
}

桶排序虽然简单但是有很大的限制。比如本例,只能排1到100的整数,负数和小数排不了。而且十分浪费存储空间。假设我只需要排10个数,但是里面有一个一亿,那就需要申请一亿个空间。但是优点也有,它是速度最快的排序算法,时间复杂度为O(M+N)。其中M表示桶的个数,N表示排序数的个数。

相关文章

  • 算法与数据结构(二):排序篇-O(n^2)算法:选择 &

    排序基础 O(n^2)的算法虽然简单,但也实用!让我们从最简单的基础排序算法开始,打开我们的算法大门! 排序算法 ...

  • 插入排序算法实现

    排序算法是最常见,最基础的算法,作者文集中记录了两种排序算法(插入排序,归并排序) 插入排序算法实现很简单直接,附...

  • 【算法】排序(一)选择排序

    在排序算法中,最简单的莫过于选择排序了。 本文将介绍以下内容 排序思路算法实现(JAVA)测试阶段算法分析 排序思...

  • 【动画】JQuery实现冒泡排序算法动画演示

    1 前言 冒泡排序是大家最熟悉的算法,也是最简单的排序算法,因其排序过程很象气泡逐渐向上漂浮而得名。为了更好的理解...

  • 面试常见算法集之排序(快速排序)

    一、算法简介 在排序算法中,冒泡排序和选择排序因为简单被大多数人所熟知,然而在实际的排序需求中,快速排序算法才是最...

  • 排序算法系列——选择排序

    什么是选择排序 选择排序可以说是众多排序算法中,最基础、最直观的一个算法了。 它的思想十分简单: 遍历列表,找出最...

  • js常用的排序算法

    1.冒泡排序: 最简单的排序算法,代码实现:function bubbleSort(arr) {var len ...

  • 『算法』之 初级排序算法总结

    本篇文章同时收录在我的个人博客:『算法』之 初级排序算法总结 选择排序 一种最简单的排序算法:首先,找到数组中最小...

  • 插入排序

    1 .算法思想 插入排序是最简单的排序算法之一。假定要将n个元素 a[0], a[1], · · · , a[n ...

  • 优化冒泡排序(JAVA)

    算法   冒泡排序作为最基础最简单的排序算法,实质是相邻两元素比较,若有序则跳过,若无序则交换。最多需n-1趟排序...

网友评论

      本文标题:最简单的排序算法

      本文链接:https://www.haomeiwen.com/subject/vgqzfftx.html