Skip to content

Commit

Permalink
Merge pull request #38 from a420355244/master
Browse files Browse the repository at this point in the history
homework
  • Loading branch information
gaodekui authored Mar 12, 2017
2 parents 200c330 + add38bd commit 8d93f00
Show file tree
Hide file tree
Showing 26 changed files with 845 additions and 16 deletions.
108 changes: 92 additions & 16 deletions group16/420355244/Homework2/src/com/coderising/array/ArrayUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,21 @@ public static void reverseArray(int[] origin){
*/

public static int[] removeZero(int[] oldArray){
int[] notZero = new int[oldArray.length];
for(int i = 0;i < oldArray.length ;i++){
int zeroCount = 0;
for(int i = 0;i < oldArray.length; i++){
if(oldArray[i] == 0){
zeroCount++;
}
}
int[] newArr = new int[oldArray.length - zeroCount];
int index = 0;
for(int i = 0;i < oldArray.length; i++){
if(oldArray[i] != 0){

newArr[index] = oldArray[i];
index++;
}
}
return oldArray;
return newArr;
}

/**
Expand Down Expand Up @@ -60,22 +68,29 @@ public static int[] merge(int[] array1, int[] array2){
combineArr[i] = array1[i];
}
for(int i = 0;i < array2.length; i++){
int index = array1.length -1;
boolean same = false;
for(int j = 0;j < repeatedNum.length; j++){
if(array2[i] != repeatedNum[j]){
combineArr[array1.length + i] = array2[i];
if(array2[i] == repeatedNum[j]){
same = true;
}
}
if(!same){
index += 1;
combineArr[index] = array2[i];
}
}
//冒泡排序
for(int i = 0;i < combineArr.length;i++){
for(int j = i + 1;j < combineArr.length;j++){
int x = combineArr[i];
if(x > combineArr[j]){

if(combineArr[i] > combineArr[j]){
int x = combineArr[i];
combineArr[i] = combineArr[j];
combineArr[j] = x;
}
}
}
return null;
return combineArr;
}
/**
* 把一个已经存满数据的数组 oldArray的容量进行扩展, 扩展后的新数据大小为oldArray.length + size
Expand All @@ -87,7 +102,11 @@ public static int[] merge(int[] array1, int[] array2){
* @return
*/
public static int[] grow(int [] oldArray, int size){
return null;
int[] newArr = new int[oldArray.length + size];
for(int i = 0;i < oldArray.length; i++){
newArr[i] = oldArray[i];
}
return newArr;
}

/**
Expand All @@ -98,7 +117,31 @@ public static int[] grow(int [] oldArray, int size){
* @return
*/
public static int[] fibonacci(int max){
return null;
if(max == 1){
return null;
}else{
int length = 0;
int dataBefore = 0;
int dataAfter = 1;
while(dataAfter < max){
int date = dataAfter;
dataAfter = dataAfter + dataBefore;
dataBefore = date;
length++;
}
int index = 0;
int[] result = new int[length];
dataBefore = 0;
dataAfter = 1;
while(dataAfter < max){
result[index] = dataAfter;
int date = dataAfter;
dataAfter = dataAfter + dataBefore;
dataBefore = date;
index ++;
}
return result;
}
}

/**
Expand All @@ -108,6 +151,12 @@ public static int[] fibonacci(int max){
* @return
*/
public static int[] getPrimes(int max){
int i = 1;
int length = 0;
while(i < max){
i++;
int search = 1;
}
return null;
}

Expand All @@ -130,7 +179,14 @@ public static int[] getPerfectNumbers(int max){
* @return
*/
public static String join(int[] array, String seperator){
return null;
StringBuilder sb = new StringBuilder();
for(int i=0 ;i < array.length; i++){
sb.append(String.valueOf(array[i]));
if(i != array.length - 1){
sb.append(seperator);
}
}
return sb.toString();
}

public static void main(String[] args) {
Expand All @@ -139,9 +195,29 @@ public static void main(String[] args) {
for (int i : a) {
System.out.print(i+",");
}*/
int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5} ;
removeZero(oldArr);
for (int i : oldArr) {
/*int[] oldArr = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5} ;
int[] newArr = removeZero(oldArr);
for (int i : newArr) {
System.out.print(i+",");
}*/
/*int[] a1 = {3, 5, 7,8};
int[] a2 = {4, 5, 6,7};
int[] merge = merge(a1,a2);
for (int i : merge) {
System.out.print(i+",");
}*/
/*int[] oldArray = {2,3,6};
int size = 3;
int[] newArr = grow(oldArray, size);
for (int i : newArr) {
System.out.print(i+",");
}*/
/*int[] array= {3,8,9};
String seperator = "-";
String join = join(array, seperator);
System.out.println(join);*/
int[] fibonacci = fibonacci(15);
for (int i : fibonacci) {
System.out.print(i+",");
}
}
Expand Down
7 changes: 7 additions & 0 deletions group16/420355244/Homework3/.classpath
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
<classpathentry kind="output" path="bin"/>
</classpath>
1 change: 1 addition & 0 deletions group16/420355244/Homework3/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/bin/
17 changes: 17 additions & 0 deletions group16/420355244/Homework3/.project
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Homework3</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
package com.coderising.array;

public class ArrayUtil {

/**
* 给定一个整形数组a , 对该数组的值进行置换
例如: a = [7, 9 , 30, 3] , 置换后为 [3, 30, 9,7]
如果 a = [7, 9, 30, 3, 4] , 置换后为 [4,3, 30 , 9,7]
* @param origin
* @return
*/
public void reverseArray(int[] origin){

}

/**
* 现在有如下的一个数组: int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}
* 要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,生成的新数组为:
* {1,3,4,5,6,6,5,4,7,6,7,5}
* @param oldArray
* @return
*/

public int[] removeZero(int[] oldArray){
return null;
}

/**
* 给定两个已经排序好的整形数组, a1和a2 , 创建一个新的数组a3, 使得a3 包含a1和a2 的所有元素, 并且仍然是有序的
* 例如 a1 = [3, 5, 7,8] a2 = [4, 5, 6,7] 则 a3 为[3,4,5,6,7,8] , 注意: 已经消除了重复
* @param array1
* @param array2
* @return
*/

public int[] merge(int[] array1, int[] array2){
return null;
}
/**
* 把一个已经存满数据的数组 oldArray的容量进行扩展, 扩展后的新数据大小为oldArray.length + size
* 注意,老数组的元素在新数组中需要保持
* 例如 oldArray = [2,3,6] , size = 3,则返回的新数组为
* [2,3,6,0,0,0]
* @param oldArray
* @param size
* @return
*/
public int[] grow(int [] oldArray, int size){
return null;
}

/**
* 斐波那契数列为:1,1,2,3,5,8,13,21...... ,给定一个最大值, 返回小于该值的数列
* 例如, max = 15 , 则返回的数组应该为 [1,1,2,3,5,8,13]
* max = 1, 则返回空数组 []
* @param max
* @return
*/
public int[] fibonacci(int max){
return null;
}

/**
* 返回小于给定最大值max的所有素数数组
* 例如max = 23, 返回的数组为[2,3,5,7,11,13,17,19]
* @param max
* @return
*/
public int[] getPrimes(int max){
return null;
}

/**
* 所谓“完数”, 是指这个数恰好等于它的因子之和,例如6=1+2+3
* 给定一个最大值max, 返回一个数组, 数组中是小于max 的所有完数
* @param max
* @return
*/
public int[] getPerfectNumbers(int max){
return null;
}

/**
* 用seperator 把数组 array给连接起来
* 例如array= [3,8,9], seperator = "-"
* 则返回值为"3-8-9"
* @param array
* @param s
* @return
*/
public String join(int[] array, String seperator){
return null;
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.coderising.download;

import com.coderising.download.api.Connection;

public class DownloadThread extends Thread{

Connection conn;
int startPos;
int endPos;

public DownloadThread( Connection conn, int startPos, int endPos){

this.conn = conn;
this.startPos = startPos;
this.endPos = endPos;
}
public void run(){

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package com.coderising.download;

import com.coderising.download.api.Connection;
import com.coderising.download.api.ConnectionException;
import com.coderising.download.api.ConnectionManager;
import com.coderising.download.api.DownloadListener;


public class FileDownloader {

String url;

DownloadListener listener;

ConnectionManager cm;


public FileDownloader(String _url) {
this.url = _url;

}

public void execute(){
// 在这里实现你的代码, 注意: 需要用多线程实现下载
// 这个类依赖于其他几个接口, 你需要写这几个接口的实现代码
// (1) ConnectionManager , 可以打开一个连接,通过Connection可以读取其中的一段(用startPos, endPos来指定)
// (2) DownloadListener, 由于是多线程下载, 调用这个类的客户端不知道什么时候结束,所以你需要实现当所有
// 线程都执行完以后, 调用listener的notifiedFinished方法, 这样客户端就能收到通知。
// 具体的实现思路:
// 1. 需要调用ConnectionManager的open方法打开连接, 然后通过Connection.getContentLength方法获得文件的长度
// 2. 至少启动3个线程下载, 注意每个线程需要先调用ConnectionManager的open方法
// 然后调用read方法, read方法中有读取文件的开始位置和结束位置的参数, 返回值是byte[]数组
// 3. 把byte数组写入到文件中
// 4. 所有的线程都下载完成以后, 需要调用listener的notifiedFinished方法

// 下面的代码是示例代码, 也就是说只有一个线程, 你需要改造成多线程的。
Connection conn = null;
try {

conn = cm.open(this.url);

int length = conn.getContentLength();

new DownloadThread(conn,0,length-1).start();

} catch (ConnectionException e) {
e.printStackTrace();
}finally{
if(conn != null){
conn.close();
}
}




}

public void setListener(DownloadListener listener) {
this.listener = listener;
}



public void setConnectionManager(ConnectionManager ucm){
this.cm = ucm;
}

public DownloadListener getListener(){
return this.listener;
}

}
Loading

0 comments on commit 8d93f00

Please sign in to comment.