选择排序算法的JAVA实现

1,采用选择排序对元素进行排列时,元素之间需要进行比较,因此需要实现Comparable<T>接口。即,<TextendsComparable<T>>.更进一步,如果允许待比较的类型可以和它的父类型进行比较,则需要写成:<TextendsComparable<?superT>,其中<?superT>表示T的任意超类。2,SelectionSortArray.java实现了选择排序的迭代形式和递归形式。具体代码如下:publicclassSelectionSortArray{/**Task:将数组中前n个对象按升序排列*@paramaComparable对象的数组*@paramn大于0的整数,表示数组的长度*/publicstatic<TextendsComparable<?superT>>voidselectionSort(T[]a,intn){for(intindex=0;index<n-1;index++){intindexOfNextSmallest=getIndexOfSmalles...

JAVA实现二叉树(简易版--实现了二叉树的各种遍历)

1,个人感觉二叉树的实现主要还是如何构造一颗二叉树。构造二叉树函数的设计方法多种多样,本例采用addNode方法实现。以下程序通过定义内部类来表示二叉树的结点,然后再实现了二叉树这种数据结构的一些基本操作。 2,说说以下程序的一些不足: a,56行中的判断树是否为空时,依据根结点的数据域是否为空来判断。而使用不带参数的构造函数构造二叉树时,根结点的不空的,此时说明树已经有了根结点,但是根结点的数据却是空的,此时的树高度为1,但是不能访问树根结点,因为树根结点的数据域没有值。3,重点讲解下二叉树遍历的几个方法:先序遍历:将先序遍历过程中遇到的结点添加到ArrayList<TreeNode>中。根据先序遍历的递归的性质,调用addAll(Containerc)方法完成遍历主要过程。层序遍历:层序遍历需要使用队列,方法level_Traverse中定义了ArrayDeque<TreeNode>类型的队列。1packagetree;23importjava.util.ArrayDeque;4importjava.util.ArrayList;5imp...

JAVA实现二叉

树是编程中一种常用的数据结构。以前在学习数据结构时,总想着如何实际地实现出一颗二叉树出来,现在参考了《数据结构与算法分析JAVA语言描述第二版》之后,照着书中的例子实现了一颗二叉树,个人感觉书上面的二叉实现操作比较复杂。下面将我学到的一些知识记录下来:1,定义树的操作的基本接口,其中不包括插入或删除操作,因为这二种操作与树的结构相关,不同的树的实现有着不同的插入与删除方式,故不应该将这二种操作放在接口中让所有的类来实现。同时,接口中也不包括遍历操作,因为并不是每个应用都会用到遍历。我们可以定义返回一个迭代器的方法,由于树中有多种不同的遍历,树的类可以含有几个方法,每个方法返回一种迭代器。基本接口中定义了树的常用操作,代码如下:publicinterfaceTreeInterface<T>{publicTgetRootData();publicintgetHeight();publicintgetNumberOfNodes();publicbooleanisEmpty();publicvoidclear();} 2,由于对树的许多操作都少不了遍历,因此需要构造一个...
代码星球 代码星球·2020-04-04

使用JAVA数组实现顺序栈

1,首先总结一下线性表(分为顺序表和链接表,【即顺序存储结构和链式存储结构的区别】)和栈(顺序栈和链接栈)还有队列(顺序队列和链接队列)的JAVA类库中的实现:java.util.ArrayList实现了顺序表,java.util.LinkedList实现了链接表的功能。java.util.ArrayDeque实现了顺序栈和顺序队列(该类中即定义了与栈操作有关的方法,也定义了与队列操作有关的方法)、java.util.LinkedList实现了链接栈和链接队列。2,定义了一个Stack<E>接口,指明该栈实现了哪些具体的操作。接口如下:1publicinterfaceStack<E>{2publicintlength();//返回栈的长度34publicEpop();//出栈56publicvoidpush(Eelement);//进栈78publicEpeek();//访问栈顶元素910publicbooleanempty();//判断栈是否为空1112publicvoidclear();//清空栈13}3,在JAVA类库中,java.util.ArrayDe...

使用JAVA数组实现顺序

1,引入了JAVA泛型类,因此定义了一个Object[]类型的数组,从而可以保存各种不同类型的对象。2,默认构造方法创建了一个默认大小为16的Object数组;带参数的构造方法创建一个指定长度的Object数组3,实现顺序表的基本操作有:返回表的长度、获取指定索引处的元素(注意是索引,而不是位置。索引以下标0开始,位置以下标1开始)、按值查找数据元素的位置、直接插入元素(顺序表尾部)、向指定位置插入元素、直接删除元素(在顺序表尾部)、删除指定索引处元素、判断表是否为空、清空表。4,在Java类库中,java.util.ArrayList类实现顺序表,因此可以直接使用JAVA类库中的ArrayList来完成顺序表的各种操作。以下为实现顺序表的具体代码:1importjava.util.Arrays;23publicclassSequenceList<T>{4privatefinalintDEFAULT_SIZE=16;//final实例变量显示指定初始值,且不再变化。56privateObject[]elementData;//该数组用来保存顺序表中的元素7private...

最短编辑距离算法实现

一,算法介绍在CS124课程的第一周提到求解两个字符串相似度的算法---MinimumEditDistance(最短编辑距离)算法。该算法在NLP(自然语言处理)中也会用到。如何定义相似度呢?任给两个字符串X和Y,使用以下三种操作将字符串X变到字符串Y :①插入(Insert)操作;②删除操作(delete);③替换操作(substitute)比如字符串X="intention", 字符串Y="execution"。从字符串X转换成字符串Y如下图所示: 定义:插入操作的代价为1,删除操作的代价为1,替换操作的代价为2(称为:Levenshteindistance)。那么,"intention" 变成 "execution"执行了三次替换,一次删除,一次插入。因此,总代价为8而这个代价又称为编辑距离,用之来衡量两个字符串的相似程度。显然,若两个字符串越相似,则从一个字符串变到另一个字符串所需要的“操作”步骤就越少。 二,动态规则求解最短编辑距离为什么能用动态规划来求解呢?ⓐ该问题可以分解成若干个子问题;ⓑ...

实现秒表功能, 包含时,分,秒,毫秒

vartimer;functionstartClick(){   varh=document.getElementById("hours");varm=document.getElementById("minutes");vars=document.getElementById("seconds");varms=document.getElementById("millSec");            h.innerHTML="00";m.innerHTML="00";s.innerHTML="00";ms.innerHTML="00";            vari=0;//记录毫秒timer=setInterval(function(){i+=1;h.innerHTML=parseInt(i/360000);//...

PHP 抓取网页内容的几个函数

<?php//获取所有内容url保存到文件functionget_index($save_file,$prefix="index_"){$count=68;$i=1;if(file_exists($save_file))@unlink($save_file);$fp=fopen($save_file,"a+")ordie("Open".$save_file."failed");while($i<$count){$url=$prefix.$i.".htm";echo"Get".$url."...";$url_str=get_content_url(get_url($url));echo"OKn";fwrite($fp,$url_str);++$i;}fclose($fp);}//获取目标多媒体对象functionget_object($url_file,$save_file,$split="|--:**:--|"){if(!file_exists($url_file))die($url_file."notexist");$file_arr=file($url_file);if...

PHP 通过fsockopen函数获取远程网页源码

<?php$fp=fsockopen("www.baidu.com",80,&$errno,&$errstr,10);if(!$fp){echo"$errstr($errno)<br>";}else{fputs($fp,"GET/HTTP/1.0Host:www.baidu.com");while(!feof($fp)){echofgets($fp,128);}fclose($fp);}?>...

JavaScript的数组实现队列与堆栈的方法

一、队列和堆栈的简单介绍1.1、队列的基本概念队列:是一种支持先进先出(FIFO)的集合,即先被插入的数据,先被取出!如下图所示:1.2、堆栈的基本概念堆栈:是一种支持后进先出(LIFO)的集合,即后被插入的数据,先被取出!如下图所示:二、在JavaScript中实现队列和堆栈在JavaScript中实现队列和数组主要是通过数组,js数组中提供了以下几个方法可以让我们很方便实现队列和堆栈:shift:从数组中把第一个元素删除,并返回这个元素的值。unshift:在数组的开头添加一个或更多元素,并返回新的长度push:在数组的中末尾添加元素,并返回新的长度pop:从数组中把最后一个元素删除,并返回这个元素的值。2.1、实现队列  代码如下复制代码<scripttype="text/javascript">       //创建一个数组来模拟队列       vara=newArray();  &nb...

js实现继承的5种方式

  js是门灵活的语言,实现一种功能往往有多种做法,ECMAScript没有明确的继承机制,而是通过模仿实现的,根据js语言的本身的特性,js实现继承有以下通用的几种方式1.使用对象冒充实现继承(该种实现方式可以实现多继承)实现原理:让父类的构造函数成为子类的方法,然后调用该子类的方法,通过this关键字给所有的属性和方法赋值Js代码  function Parent(firstname)  {      this.fname=firstname;      this.age=40;      this.sayAge=function()      {          consol...

php+MySql实现登录系统与输出浏览者信息功能

这篇文章主要介绍了php+MySql实现登录系统与输出浏览者信息功能的相关资料,需要的朋友可以参考下 本系统,与之前在《ASP连接Access数据库的登陆系统》(点击打开链接)一文中的asp登录系统的思想完全一样,只是编程语言从asp变成了php,数据库从Access变成了mysql。一、基本目标首先在mysql存在着如下的用户信息表:在页面中有一个登录表单,上面需要用户填写用户名与密码等信息如果用户输入的用户名在用户信息表里面根本就没有,那么则弹出“查无此人”的对话框,并返回本页如果用户输入的密码错误,那么则弹出“密码错误”的对话框,并返回本页如果用户输入的登录信息正确,那么则跳到“登录成功”的页面,并输出用户当前的IP、使用的系统的语言环境、与浏览器信息“登录成功”的页面是被保护的,浏览器并不可以通过在浏览器中输入地址的方式,绕开输入密码的页面,直接访问“登录成功”页面二、基本思想用户输入用户名与密码的那一页用静态页面,只要其表单指向登录判断页login...

php中json_decode()和json_encode()的使用方法

json_decode对JSON格式的字符串进行编码而json_encode对变量进行JSON编码,需要的朋友可以参考下1.json_decode()json_decode(PHP5>=5.2.0,PECLjson>=1.2.0)json_decode—对JSON格式的字符串进行编码说明mixedjson_decode(string$json[,bool$assoc])接受一个JSON格式的字符串并且把它转换为PHP变量参数json待解码的jsonstring格式的字符串。assoc当该参数为TRUE时,将返回array而非object。返回值ReturnsanobjectoriftheoptionalassocparameterisTRUE,anassociativearrayisinsteadreturned.范例Example#1json_decode()的例子复制代码代码如下:<?php$json='{"a":1,"b":2,"c":3,"d":4,"e":5}';var_dump(json_decode($json));var_dump(json...
首页上一页...571572573574575...下一页尾页