桶排序,冒泡排序

桶排序

我们创建一个一个数组,数组内存放的内容是我们对该数组对应的数字的计数,然后我们按照计算对数组的对应的值进行输出,这样我们就能输入的值,进行排序。因为我们的桶是排好序列的。

#include <stdio.h>
int main(){
    int a[11],i,t,j;
    for (i=0;i<=10;i++){//创建一个数组,给这个数组初始化,每个位置都赋值为0
        a[i]=0;
    }
    for (i=1;i<=5;i++){//从键盘录入5个数,对应数字的筒,里面存的数字递增一个数字
        scanf("%d",&t);
        a[t]++;
    }
    for (i=0;i<=11;i++)//开始扫描这个数组,桶内递增几个数字,将这个数字,按次数输出
        for (j=1; j<=a[i]; j++)
            printf("%d",i);
    getchar();
    getchar();
    return 0;
}

桶排序的缺点:

  1. 我们假如要排列的数字较大的时候,我们就需要这个数字对应的桶
  2. 我们不可以对小数进行排序
  3. 只能输出对数字的排序,不能输出对数组以外的信息进行输出

冒泡排序

冒泡排序就是对一组数组,进行前后值的比较,比如我们需要对数组进行从小到大的排序的时候,我们只需要从头开始,将前后值进行比较,相比较之后,大的值排在后面,依次进行就可以达到目的。我们有n个数字的时候,就会进行n-1趟,每次都是n-i次交换,i是第几趟,因为我们排序过一趟的话,就不需要动最后一个值,排序过两趟的话就不需要对最后面的两个值进行排序。

#include <stdio.h>
int main(){
    int a[100],n,i,j,t;
    scanf("%d",&n);
    for (i=1; i<=n; i++) {
        scanf("%d",&a[i]);
    }
    for (i=1; i<=n-1; i++) {
        for (j=1; j<=n-i; j++) {
            if (a[j]<a[j+1]) {
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
        }
    }
    for (i=1; i<=n; i++) {
        printf("%d",a[i]);
    }
    getchar();
    getchar();
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 9,084评论 0 15
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 10,585评论 0 52
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 5,017评论 0 2
  • 概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的...
    Luc_阅读 6,769评论 0 35
  • 终于读完了,好久没看东野的小说了。幻夜里的美东,拥有着白夜行里雪穗一样的魔性,但更露骨。读完白夜行,我和我哥们讨论...
    陌阳魂阅读 1,722评论 0 0