【C#】1.算法温故而知新 - 简单的桶排序

缺点:

1.不适用于小数

2.当数值过多,太浪费空间,比如数值范围为0~99999,那需申请100000个变量,也就是要写成a[1000000]。

代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    public class Program
    {
        public static void Main(string[] args)
        {
            int[] nums = new int[9] { 2, 1, 9, 2, 7, 3, 1, 8, 2 };//初始化一个数组,其中有9个数,每个数都不大于10,这里假定是我们输入的数,需要从小到大排序
            int[] a = new int[11];//因为每个数都不大于10,所以初始化一个包含11个数的数组a
            int i, j, t;
            for (i = 0; i <= 10; i++) a[i] = 0;//给a数组赋值都为0

            for (i = 0; i < nums.Length; i++)
            {
                t = nums[i];//获取当前的数
                a[t]++;//进行计数
            }
            for (i = 0; i <= 10; i++)//依次判断a[0]~a[10]
                for (j = 1; j <=a[i]; j++)//出现了几次就输出几次
                    Console.Write("  " + i);
        }
    }
}
时间: 2024-10-20 23:08:32

【C#】1.算法温故而知新 - 简单的桶排序的相关文章

啊哈!算法之快速排序与桶排序

啊哈!算法之快速排序与桶排序 1.快速排序算法 快速排序由 C. A. R. Hoare(东尼·霍尔,Charles Antony Richard Hoare)在1960 年提出,之后又有许多人做了进一步的优化.在数列种随机找出一个基准数,因为数列是杂乱的,所以取首项为基准数.从后往前找到比基准数大的位置,再从前往后找到比基准数小的位置,交换元素:右游标向前移动与左游标向后移动,它们相遇时用基准数的位置与相遇的位置交换.此时原来数列以相遇的位置被划分为了两个需要排序的数列,再次执行上述过程:当左

C语言排序算法之简单交换法排序,直接选择排序,冒泡排序

C语言排序算法之简单交换法排序,直接选择排序,冒泡排序,最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 简单交换法排序 1 /*简单交换法排序 2 根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置 3 交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动 4 不稳定 5 */ 6 #include<windows.h> 7 #include<stdio.h> 8 void main(){ 9 int i,j,arr[10

排序算法(一)-桶排序

桶排序,顾名思义,为要拍排序数组分配一些的”桶“来排序,什么意思呢?假如你有一个数组,其中包含10个元素,其中最大的数字是90,你就分配个90个以上的桶(假如定义一个int a[101]),你可以看到,10个数定义一个含100个元素的数组用来排序(当然,a[100]随便啦,你定义int a[100],a[193]都可以,只要这个元素的个数多于要排序数组的最大数,这都是你估计的,所以你尽量数组往大里面定义,原因你看排序过程即可),很费空间,但是很省时间.下面说一个排序过程. 假如你第一个数字是3,

排序算法&lt;No.2&gt;【桶排序】

算法,是永恒的技能,今天继续算法篇,将研究桶排序. 算法思想: 桶排序,其思想非常简单易懂,就是是将一个数据表分割成许多小数据集,每个数据集对应于一个新的集合(也就是所谓的桶bucket),然后每个bucket各自排序,或用不同的排序算法,或者递归的使用bucket sort算法,往往采用快速排序.是一个典型的divide-and-conquer分而治之的策略. 其中核心思想在于如何将原始待排序的数据划分到不同的桶中,也就是数据映射过程f(x)的定义,这个f(x)关乎桶数据的平衡性(各个桶内的数

复习数据结构:排序算法(七)——桶排序

桶排序是一种稳定的排序方法,也是一种外排序. 桶排序的时间复杂度:最坏情况运行时间:当分布不均匀时,全部元素都分到一个桶中,则O(n^2),当然[算法导论8.4-2]也可以将插入排序换成堆排序.快速排序等,这样最坏情况就是O(nlgn).最好情况运行时间:O(n). 也就说,前面介绍的排序算法要么是O(n^2),要么是O(nlogn),只有桶排序是可能实现O(n)排序的,但是对数据是有要求的. 基本思想:是将阵列分到有限数量的桶子里.每个桶子再个别排序(有可能再使用别的排序算法或是以递回方式继续

啊哈!算法 学习1 排序 - 简单的桶排序

//排序10个0-100之间数字 //定义int数组 //这里生成包含101个个数数组是以为要对应输入的值 到对应到数组的index 譬如输入10 对应a[10] int a[101]; //数组赋值 生成 for (int i = 0; i < 101; i++) { a[i] = 0; } //声明变量 int x; //循环输入10个数字 for (int i = 0; i < 10; i++) { //读取输入值 scanf("%d",&x); //输入值对

简单的桶排序

#include<stdio.h>int main(){ int i,j,n,t; int tong[11]; printf(" 请输入数字个数 :"); scanf("%d",&n); for(i=1;i<=n;i++) { tong[i]=0; } for(i=1;i<=n;i++) { scanf("%d",&t); tong[t]++; } for(i=1;i<=n;i++) { printf

最快最简单的排序算法:桶排序

在我们生活的这个世界中到处都是被排序过的.站队的时候会按照身高排序,考试的名次需要按照分数排序,网上购物的时候会按照价格排序,电子邮箱中的邮件按照时间排序……总之很多东西都需要排序,可以说排序是无处不在.现在我们举个具体的例子来介绍一下排序算法. 首先出场的我们的主人公小哼,上面这个可爱的娃就是啦.期末考试完了老师要将同学们的分数按照从高到低排序.小哼的班上只有5个同学,这5个同学分别考了5分.3分.5分.2分和8分,哎考的真是惨不忍睹(满分是10分).接下来将分数进行从大到小排序,排序后是8

【啊哈!算法】最快最简单的排序——桶排序

转自:http://bbs.ahalei.com/thread-4399-1-1.html 最快最简单的排序——桶排序 在我们生活的这个世界中到处都是被排序过的.站队的时候会按照身高排序,考试的名次需要按照分数排序,网上购物的时候会按照价格排序,电子邮箱中的邮件按照时间排序……总之很多东西都需要排序,可以说排序是无处不在.现在我们举个具体的例子来介绍一下排序算法. 首先出场的我们的主人公小哼,上面这个可爱的娃就是啦.期末考试完了老师要将同学们的分数按照从高到低排序.小哼的班上只有5个同学,这5个