• 《啊哈,算法》读书笔记


    最快速、最简单的排序-- 桶排序:

         int a[11], i, j, t; //开辟存储空间为11 的数组
            for (i = 0; i <= 10; i++) {
                a[i] = 0;//初始化存储内容
            }
            
            for (i = 1; i <= 5; i++) {//循环读入5个数
                scanf("%d", &t);//把每个数读到变量 t 中
                a[t]++;//进行计数
            }
            
            for (i = 10; i >= 0; i--) {//依次判断 a[0] ~ a[10]
                for (j = 1; j <= a[i]; j++) {//出现了几次就打印几次
                    printf("%d", i);
                }
            }
            
            getchar();
            getchar();//用来暂停程序,方便查看输出内容,也可用 system("pause") 代替
    //        system("pause");

      时间复杂度:

      第2行循环了 m 次(m 为桶的个数),第6行循环了 n 次(n 为待排序的个数),用O表示时间复杂度,则公共循环了 (m+n) 次,记作 O(m+n)

      缺点:非常浪费空间,每次都需要开辟很多,例如,排序 200000以内的,需要申请 200000 个变量

      冒泡排序:

      冒泡排序的基本思想是:每次比较两个相邻的元素,如果它们的顺序错误就把它们交换 过来。 

            int a[100], i, j, t, n;
            scanf("%d", &n);//输入一个数 n 表示接下来有 n 个数
            for (i = 1; i <= n; i++) {//循环读入 n 个数 到 数组 a 中
                scanf("%d", &a[i]);
            }
            
            for (i = 1; i <= n-1; i++) {//n 个数排序,只用进行 n-1 次
                for (j = 1; j <= n - i; j++) {//从第1位开始比较,直到最后一个尚未归位的数,
                    
                    /* 降序
                    if (a[j] < a[j+1]) {//比较大小并交换
                        t = a[j];
                        a[j] = a[j+1];
                        a[j+1] = t;
                    }
                    */
                    
                    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();    

      

  • 相关阅读:
    因特网中和多媒体有关的协议
    进程与线程
    线程模型
    SMP PVP Cluster
    读写者
    回调函数
    环境变量
    堆与栈的区别
    操作系统中的同步、异步、阻塞和非阻塞
    Razor潜入2令人疑惑的LocateOwner方法
  • 原文地址:https://www.cnblogs.com/ZachRobin/p/15740210.html
Copyright © 2020-2023  润新知