精华内容
下载资源
问答
  • 将数据按照指定的规律进行重新排列,正序排列(从小到大)或者倒序排列 冒泡排序口诀: N个数字排序,两两比较小靠前,外层循环N-1,内层循环N-i-1 实现: <!DOCTYPE html> <html lang="en"> <...

    【JavaScript案例】——运用JS实现排序算法中的冒泡排序

    以前我们讲过使用Python实现排序算法中的冒泡排序,今天我们来看看使用JS怎么实现排序算法中的冒泡排序.

    那么什么是排序算法呢?

    排序算法详解

    排序的概念:

    • 将数据按照指定的规律进行重新排列,正序排列(从小到大)或者倒序排列

    冒泡排序口诀:

    • N个数字来排序,两两比较小靠前,外层循环N-1,内层循环N-i-1

    实现:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    
    <body>
        <script>
            window.onload = function () {
                var arr = [18, 9, 21, 47, 15, 23, 11];
                // 外层循环控制的是比较的轮数
                for (var i = 0; i < arr.length - 1; i++) {
                    // 内层循环是每一轮的两两比较
                    for (var j = 0; j < arr.length - i - 1; j++) {
                        if (arr[j] > arr[j + 1]) {
                            var temp = arr[j];
                            arr[j] = arr[j + 1];
                            arr[j + 1] = temp;
                        }
                    }
                }
                console.log(arr);
            }
        </script>
    </body>
    
    </html>
    
    展开全文
  • 选择排序图解

    2020-08-05 12:38:46
    将这个数组从小到大排序。 思路: 1.我们先得到一个最小的数,将它放置于数组第一位。 2.然后我们按照第一步,每一次得到一个最小数放置在第二位直到放到倒数第二位。(最后一位不用再去得到放置) 3.然后我们就要...

    选择排序

    题型:int[]array= {3,4,2,1}; 将这个数组从小到大排序。
    思路:
    1.我们先得到一个最小的数,将它放置于数组第一位。
    2.然后我们按照第一步,每一次得到一个最小数放置在第二位直到放到倒数第二位。(最后一位不用再去得到放置)
    3.然后我们就要去考虑怎么样得到最小然后去放置。
    比喻:有一个拳击手,刚开始带着这个数字装备去打擂台,当他打赢了以后,对方说不公平,让其互换数字装备继续下一次打擂,直到拳击手的数字装备最差,才承认他的技术。(从当前开始的后一个一直打到最后一个得到最小值)
    4.分解:
    第一次:3 4 2 1 得到3去进行打擂;
    3 4 2 1–>(3和4比)3 4 2 1–>(3和2比)2 4 3 1–>(2和1比)1 4 3 2
    第二次:1 4 3 2 得到4去进行打擂;
    1 4 3 2–>(4和3比)1 3 4 2–>(3和2比)1 2 4 3
    第三次:1 2 4 3得到4去进行打擂;
    1 2 4 3–>(4和3比)1 2 3 4 (尽量自己画一遍,帮助理解)
    5.上代码分析
    int[]array= {3,4,2,1}; //创建任意一个数组
    int length=array.length; //先得到数组长度
    for(int i=0;i<length-1;i++) { //从0位置开始放置最小值
    //这个for循环主要是为了不同的放置,放置到0,1,length-1;
    for(int j=i+1;j<length;j++) { //对0位置(i)之后的数依次进行比较
    //j=i+1就是因为打擂台是从下一个开始到结束
    if(array[i]>array[j]) { //如果array[i]的数大于比较的数,就进行交换
    int num=array[i]; //交换
    array[i]=array[j];
    array[j]=num;
    }
    }
    }
    for(int res:array) { //增强for循环
    System.out.print(res+" "); //输出
    }
    6.结果
    在这里插入图片描述总结:其实选择排序重要的是理清思路然后对于双for的语句,要去思考它的控制语句和判断条件,观察前后for里面i ,j是否有关联。

    展开全文
  • 偶数按从小到大排序。 输入一行,包含整数个数n, n个整数值,彼此以一个空格分开。 按照要求排序后输出一行,包含排序后的n 个整数。 <code class="language-cpp">#include <...
  • 练习题 --- 冒泡排序

    2019-09-24 01:13:45
    按照升序排列,言外之意就是从小到大排列数字 拿第一个数字举例,他需要做的判断是几次呢? 首先,第一个数字需要跟第二个数字做对比,如果第一个数字比第二个数字大,那么两个数字交换一下位置,以此类推。 总结...

    题目:冒泡排序一个队列(升序)

     

    程序分析(个人分析仅供参考):

    首先,我们要知道这个排序是怎么样排序的。

    按照升序排列,言外之意就是从小到大排列数字

    拿第一个数字举例,他需要做的判断是几次呢?

    首先,第一个数字需要跟第二个数字做对比,如果第一个数字比第二个数字大,那么两个数字交换一下位置,以此类推。

    总结下来就是第一个循环需要对比的次数是list的长度-1,

    第二个循环所需要对比的次数list长度-1-第一个循环的次数m。

    第二个循环的主要功能就是具体判断两个数值的大小,以及一个交换的功能。

    交换,可以像我这样直接写一个交换功能的函数,也可以直接写到for循环中。当然这个要根据个人的习惯

    使用第二个循环的参数n当作list的角标进行判断list中的数值,

    通过已经写好的交换功能函数,把原本list中的数值进行替换为更新后的数值。

    最后输出更新后的数值,这样就实现了一个冒泡排序的功能

    转载于:https://www.cnblogs.com/AngesZhu/p/7520230.html

    展开全文
  • 为此,先按照值的大小从小到大排序,这样这实际统计的时候并没有使用到数字的值,避免了数据离散化的过程。 然后然后线段树统计某一个角标的出现与否。在查询的时候查询区间的和即可。 这个题目还有很多东西可以挖掘...

    计算右侧小于当前元素的个数

    • 线段树
      选取<val,idx>,每个数个角标和值作为二元组,然后排序。
      题目的意思就是要在这些二元组中统计值比自己小,角标比自己大的点的数目。
      为此,先按照值的大小从小到大排序,这样这实际统计的时候并没有使用到数字的值,避免了数据离散化的过程
      然后然后线段树统计某一个角标的出现与否。在查询的时候查询区间的和即可。

    这个题目还有很多东西可以挖掘,比如如果进行数据离散化怎么做,以及用树状数组做等等,留作日后复习做着用。

    class Solution {
    private:
        struct Node{
            int l=0,r=0,sum=0;
        };
        vector<Node> a;
        void build(int p,int l,int r){
            int mid = (l+r)/2;
            a[p].l = l;
            a[p].r = r;
            if(l==r) return;
            build(p*2,l,mid);
            build(p*2+1,mid+1,r);
        }
        void update(int p,int val){
            if(a[p].l == a[p].r){
                a[p].sum++;
                return;
            }
            int mid = (a[p].l + a[p].r)/2;
            if(val<=mid){
                update(p*2,val);
            }else{
                update(p*2+1,val);
            }
            a[p].sum++;
        }
        int query(int p,int l,int r){
            if(l<=a[p].l && r>=a[p].r ){
                return a[p].sum;
            }
            int res = 0 , mid = (a[p].l+a[p].r)/2;
            if(l<=mid){
                res += query(p*2,l,r);
            }
            if(r>mid){
                res += query(p*2+1,l,r);
            }
            return res;
        }   
    public:
        vector<int> ans;
        vector<pair<int,int>> temp;
        vector<int> countSmaller(vector<int>& nums) {
            int n = nums.size();
            if(n==0) return ans;
            a.resize(4*n); 
            ans.resize(n);
            build(1,1,n);
            for(int i=0;i<n;i++){
                temp.push_back(make_pair(nums[i],i+1));
            }
            sort(temp.begin(),temp.end());
            for(auto p:temp){
                ans[ p.second-1  ] = query(1,p.second+1,n);
                update(1,p.second);
            }
            return ans;
        }
    };
    
    • 树状数组
      因为值域比较小,所以无需离散化。
      但是有一个负数,所以要做一个线性变换。
    const int N = 20010;
    class Solution {
        void add(int x){
            while(x<N){
                c[x]++;
                x += x&-x;
            }
        }
        int ask(int x){
            int res = 0;
            while(x){
                res += c[x];
                x -= x&-x;
            }
            return res;
        }
        int c[N] = {0};
    public:
        vector<int> countSmaller(vector<int>& nums) {
            int n = nums.size();
            vector<int> ans(n);
            for(int& x:nums) x += 10001;
            for(int i=n-1;i>=0;i--){
                ans[i] = ask(nums[i]-1);
                add(nums[i]);
            }
            return ans;
        }
    };
    

    不得不说,树状数组比线段树的代码简洁多了。

    展开全文
  • Description 开学了,ACM队的边老板想在学校中请一些妹子一起做一项问卷调查,调查妹子们对ACM的...然后再把这些数从小到大排序按照排好的顺序去找同学做调查。老板怎么会自己去解决这么简单的问题了,所以就请...
  • 排序,数字、字符串按照ASCII,中文按照unicode从小到大排序 如果需要一个排序好的副本,同时保持原有列表不变,怎么实现呢? 注意:y = x[:] 通过分片操作将列表x的元素全部拷贝给y,如果简单的把x赋值给...
  • 排序,数字、字符串按照ASCII,中文按照unicode从小到大排序 a = [4,5,2,3,1,6] a.sort() print(x) 1,2,3,4,5,6 如果需要一个排好序的副本,同事宝石原有列表不变,怎么实现呢? a = [4...
  • 排序,数字、字符串按照ASCII,中文按照unicode从小到大排序 如果有一个人排序好的副本,同时保持原有的列表不变,怎么实现呢? 注意:y=x通过分片操作将列表x的元素全部拷贝给y,如果简单的把X赋值给Y:y=x,y和x还是...
  • python的sorted用法详解

    2021-01-21 18:25:26
    排序,数字、字符串按照ASCII,中文按照unicode从小到大排序 x = [4, 6, 2, 1, 7, 9] x.sort() print (x) # [1, 2, 4, 6, 7, 9]   如果需要一个排序好的副本,同时保持原有列表不变,怎么实现呢? x = [4, 6, 2, ...
  • 然后再把这些数从小到大排序按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。 2.解题思路 怎么让用户输入的数以空格分隔?如何去重?如何从小到大排序? 3.代码实现 n = int(input()) ...
  • 首先,我们存下所有需要查询的区间,然后根据右端点进行从小到大排序。然后依次处理这个区间中的答案,仔细想一下,后面的区间答案不会受到影响。 怎么处理区间中的答案呢? 我们按照数字出现的顺序,向树状数组...
  • 思路:先将老鼠按照重量从大到小排序,然后速度是从小到大,求最长上升子序列,学习下怎么输出最长上升子序列的路径,输出最长上升子序列路径有很多种方法,这里面是记录每个数字在最长上升子序列中的下标。...
  • 基本上都是按照从小到大排序的,比如数字,0,2,5,9,编码结果肯定是0,1,2,3 字母的话一般也是如此考虑a,b,c,d啥的,如果你实在不清楚怎么对应的话,我建议你自己提前做成one-hot的形式,自己对应,然后...
  • 文章目录1 二叉搜索树简介2 二叉...当我们把数据进行排序按照从小到大的顺序排列)后,再查找相应的这条记录?还是用上面的方法吗? 答案:最快的方式,是采用折半法(俗称二分查找)。 **思考:**当我们有新的数...
  • 大话数据结构

    2018-12-14 16:02:18
    无论多高多大的树,那也是从小到大的,由根到叶,一点点成长起来的。俗话说十年树木,百年树人,可一棵大树又何止是十年这样容易。 6.2树的定义 150 树的定义其实就是我们在讲解栈时提到的递归的方法。也就是在树...
  • 如何按照query的频度排序? 3.4.2 蚂蚁爬杆问题 3.4.3 当在浏览器中输入一个url后回车,后台发生了什么?比如输入url后,你看到了百度的首页,那么这一切是如何发生的呢? 3.4.4 判断两棵树是否相等,请实现两棵...
  • SQL语法大全

    2014-03-30 11:00:11
    sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加目标数据表) (5) 数据记录统计函数: AVG(字段名) 得出一个表格栏平均值 COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据...
  • 即表示值按照从小到大的顺序排列。这是默认参数。 DESC:表示按降序的顺序进行排序。即表示值按照从大到小的顺序排列。 如果有WHERE子句,就按照“条件表达式1”指定的条件进行查询;如果没有WHERE子句,就查询所有...

空空如也

空空如也

1 2
收藏数 26
精华内容 10
关键字:

怎么按照数字从小到大排序