用二叉树实现学生成绩的计数(随机产生100个学生成绩)

    function Node(data, left, right) {
        this.data = data;
        this.count = 1;
        this.left = left;
        this.right = right;
        this.show = show;
    }
    function show() {
        return this.data;
    }
    function BST() {
        this.root = null;
        this.insert = insert;
        this.find = find;
        this.insert = insert;
        this.update = update;
    }
    function insert(data) {
        var n = new Node(data, null, null);
        if (this.root == null) {
            this.root = n;
        } else {
            var current = this.root;
            var parent;
            while (true) {
                parent = current;
                if (data < current.data) {
                    current = current.left;
                    if (current == null) {
                        parent.left = n;
                        break;
                    }
                } else {
                    current = current.right;
                    if (current == null) {
                        parent.right = n;
                        break;
                    }
                }
            }
        }
    }
    function find(data) {
        var current = this.root;
        while (current != null) {
            if (current.data == data) {
                return current;
            } else if (data < current.data) {
                current = current.left;
            } else {
                current = current.right;
            }
        }
        return null;
    }
    function update(data) {
        var grade = this.find(data);
        grade.count++;
        return grade;
    }
    function prArray(arr) {//每行十个元素显示数组中元素
        for ( var i = 0; i < arr.length; ++i) {
            document.write(arr[i] + " ");
            if ((i + 1) % 10 == 0) {
                document.write("<br /> ");
            }
        }
    }
    function genArray(length) {//产生指定元素个数的数组
        var arr = [];
        for ( var i = 0; i < length; ++i) {
            arr[i] = Math.floor(Math.random() * 101);
        }
        return arr;
    }
    var grades = genArray(100);
    prArray(grades);
    var gradedistro = new BST();
    for ( var i = 0; i < grades.length; ++i) {//将数组中元素添加到二叉树中
        var g = grades[i];
        var grade = gradedistro.find(g);
        if (grade == null) {
            gradedistro.insert(g);
        } else {
            gradedistro.update(g);
        }
    }

    document.write("*************** " + "<br />");
    var g = 45;
    var aGrade = gradedistro.find(g);
    if (aGrade == null) {
        document.write("No occurrences of " + g);
    } else {
        document.write("Occurrences of " + g + ": " + aGrade.count);
    }
时间: 2024-10-22 00:16:20

用二叉树实现学生成绩的计数(随机产生100个学生成绩)的相关文章

52.从键盘上输入若干学生成绩(成绩在0~100之间),计算平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入

//1.建立一个for循环用于输入数据,设置退出条件 //2.算出平均成绩 #include<iostream> using namespace std; int main() { int Score,sum=0,k=0; int a[100]; float Average; cout<<"please input some students's score:"<<endl; for(int i=0;i<100;i++) { cin>&g

C++习题 对象转换(定义一个Teacher(教师)类(教师号,姓名,性别,薪金)和一个Student(学生)类(学号,姓名,性别,成绩)编写程序,将一个Student对象(学生)转换为Teacher(教师)类。

Description 定义一个Teacher(教师)类(教师号,姓名,性别,薪金)和一个Student(学生)类(学号,姓名,性别,成绩),二者有一部分数据成员是相同的,num(号码),name(姓名),sex(性别).编写程序,将一个Student对象(学生)转换为Teacher(教师)类,只将以上3个相同的数据成员移植过去.可以设想为: 一位学生大学毕业了,留校担任教师,他原有的部分数据对现在的教师身份来说仍然是有用的,应当保留并成为其教师数据的一部分. Input 一个教师的信息和一个学

键盘录入多名学生的信息: 格式:姓名,数学成绩,语文成绩,英文成绩,按总分由高到低 将学生的信息进行排列到文件中

主函数类: package cn.io; import java.io.File; import java.io.IOException; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.Set; public class iosort { /** * @param args * @throws IOException */ /* *

有n个结构变量,内含学生学号,姓名和3门课程的成绩。要求输出平均成绩的学生的信息

#include<stdio.h> # define N 3 struct Student {int num; char name[20]; float score[3]; float aver; }; int main() { void input(struct Student stu[]); struct Student max(struct Student stu[]); void print(struct Student stu); struct Student stu[N] , *p

(要求使用指针方法)一个班有四名学生,五门课。(1)求第一门课的平均分;(2)找出有两门以上课不及格的学生,输出他们的学号、全部课程成绩和平均成绩;(3)找出平均成绩在90分以上或全部课程成绩均在85

(3)找出平均成绩在90分以上或全部课程成绩均在85分以上的学生.分别编写3个函数实现以上3个功能. #include<stdio.h> #include<stdlib.h> void aver1(float *b) { int i,j; float s=0; for(i=0;i<4;i++) {  s=s+*(b+j); j=j+5;} printf("%f\n",s/4); } void excellent(float (*b)[5]) { int n

【OC复合题】之定义一个学生类,需要有姓名,年龄,考试成绩三个成员属性,创建5个对象,属性可以任意值。(Objective-C)

题目: 定义一个学生类,需要有姓名,年龄,考试成绩三个成员属性,创建5个对象,属性可以任意值.(Objective-C) 1)    不使用@property,手动编写他们的访问器方法(getter和setter),注意内存管理(手动管理内存) 2)    增加一个便利构造器(快速构造器) 3)    使用NSLog输出学生对象时,输出信息格式为:My Name Is XXX  Age Is XXX Score Is XXX 4)    对5个学生对象按照成绩->年龄->姓名优先级排序(成绩相

【sql:练习题2】查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩

题目:查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩 这里提到平均分 ,要用到avg  按照学生分组,再求平均分,这里应该是考察group by 与聚合函数的使用  大于60分应该是按照分组后筛选的结果要用having group by 与聚合函数  having 的使用 上篇博客已经写过 于是写的sql于下: SELECT studentid,AVG(score) AS a FROM student_score GROUP BY studentid HAVING a>60

实用的随机数生成类Random:测试(随机产生100个不重复的正整数)

实用的随机数生成类Random:测试(使用Random类随机生成100个不重复的正整数) 一.之前我们使用随机数用的是Math类的random()方法: tips: 产生随机数(0~9中任意整数)的方法:int random = (int)(Math.random()*10); 1.商场幸运抽奖程序. 会员号的百位数字等于产生的随机数即为幸运会员. public class GoodLuck{ public static void main(String[] args){ //产生随机数 int

在1-10000中随机生成100个数

题意:在1-10000中随机生成100个数,1-10000已经放在数组中,要求时间和空间都要O(1). 思路:因为空间要O(1),所以我们可以想到这一定是在原本数组的基础上操作,时间也要O(1)的话,证明我们无法Hash后再判重.所以我们可以这么想用一个指针表示目前已经生成好的随机数,那么这个指针从1开始,每次都从剩下的数中随机取一个和当前指针交换就可以完成了,自己写了代码,有错求指出来. import java.util.ArrayList; import java.util.HashSet;