zoukankan      html  css  js  c++  java
  • 《啊哈,算法》读书笔记

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

         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();    

      

  • 相关阅读:
    About IL, ILGenerator
    何谓系统架构师(转)
    C# weakreference
    新蛋,您能告诉我,这是怎么了吗?
    C#线程同步的常用关键字简介
    [转]百万级访问网站前期的技术准备
    Gridview控件的使用要点
    Asp.net三种页面传值方法
    浅谈 Vue css scoped & module
    Mac iTerm2 zsh: command not found: node/npm/nvm...
  • 原文地址:https://www.cnblogs.com/ZachRobin/p/15740210.html
Copyright © 2011-2022 走看看