Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
ec1d087
Create 932886072
jerrific8 Feb 26, 2017
1a56267
add BinaryTreeNode, update all Test
Feb 26, 2017
b7be5e0
Merge remote-tracking branch 'refs/remotes/gaodekui/master'
jerrific8 Feb 26, 2017
00b592b
63912401
greenhills163 Feb 26, 2017
3a8239a
作业
jerrific8 Feb 26, 2017
043f2e0
63912401
greenhills163 Feb 26, 2017
112528a
greenhills <63912401@qq.com>
greenhills163 Feb 26, 2017
096b44e
Merge pull request #18 from QQ-ing/master
gaodekui Feb 27, 2017
091ea04
Merge pull request #17 from greenhills163/master
gaodekui Feb 27, 2017
fed2ff7
Merge pull request #16 from stevenshane/master
gaodekui Feb 27, 2017
aea8e8c
Merge pull request #1 from gaodekui/master
Feb 27, 2017
3979b69
课后习题
a420355244 Feb 27, 2017
36e8915
Merge pull request #19 from a420355244/master
gaodekui Feb 27, 2017
065fb29
Merge remote-tracking branch 'refs/remotes/onlyliuxin/master'
gaodekui Feb 27, 2017
a61dab0
更新部分Array作业
Feb 27, 2017
32a5942
Merge remote-tracking branch 'refs/remotes/gaodekui/master'
Feb 27, 2017
9d80aac
first code
starlight0405 Feb 27, 2017
e8f81f5
0226作业提交
wanghongdi56 Feb 28, 2017
c2e0b7b
0226作业重新提交
wanghongdi56 Feb 28, 2017
6135dd4
0228Array作业提交
Feb 28, 2017
2456576
Merge pull request #22 from wanghongdi56/master
gaodekui Feb 28, 2017
1bdab10
Merge pull request #21 from starlight0405/master
gaodekui Feb 28, 2017
94679f3
Merge pull request #20 from hilihan/master
gaodekui Feb 28, 2017
f1f9653
修改了项目的目录结构
Mar 1, 2017
314dd5c
修改了目录结构
Mar 1, 2017
97d6868
get homework
Mar 1, 2017
dc66d71
重构项目目录、添加blog地址
Mar 1, 2017
104c2de
add ArrayUtilTest.java
Mar 1, 2017
623aab9
优化代码
Mar 1, 2017
4305971
delete old
a420355244 Mar 1, 2017
c9f3a3b
change project
a420355244 Mar 1, 2017
51f51d7
Merge pull request #24 from a420355244/master
gaodekui Mar 1, 2017
c00e9f8
Merge pull request #23 from duxiaolong/master
gaodekui Mar 1, 2017
e6c1f6d
second code
starlight0405 Mar 1, 2017
79c8ddc
Merge pull request #26 from a420355244/master
gaodekui Mar 2, 2017
e2b1dbf
Merge pull request #25 from starlight0405/master
gaodekui Mar 2, 2017
3fd1841
提交ArrayUtil
gaodekui Mar 2, 2017
906c758
完成ArrayUtil编码
Mar 2, 2017
b20db20
提交
gaodekui Mar 2, 2017
b2b111f
Merge https://github.com/gaodekui/coding2017
Mar 2, 2017
1223321
更改目录
gaodekui Mar 2, 2017
a0742f1
63912401
Mar 2, 2017
59924cc
lite structs and array manipulation
joy32812 Mar 2, 2017
4af641b
Merge pull request #29 from joy32812/master
gaodekui Mar 2, 2017
7915bf8
Merge pull request #28 from greenhills163/master
gaodekui Mar 2, 2017
22b8c2b
Merge pull request #27 from duxiaolong/master
gaodekui Mar 2, 2017
780e875
Merge remote-tracking branch 'refs/remotes/gaodekui/master'
Mar 3, 2017
64367c8
完成了读取xml文件的编码
Mar 3, 2017
ab8ba87
调整格式
Mar 3, 2017
78e0a66
添加单元测试
gaodekui Mar 3, 2017
523b6a5
Merge pull request #30 from duxiaolong/master
gaodekui Mar 3, 2017
e10e60e
完成编程题目作业
dongqisilent Mar 3, 2017
45e4f37
add ArrayUtil and test
Mar 4, 2017
9d353b1
Merge pull request #31 from dongqihust/master
gaodekui Mar 4, 2017
7533d2e
homework commit
Mar 4, 2017
3b897a0
优化代码
Mar 4, 2017
e48ca8d
Merge remote-tracking branch 'refs/remotes/origin/master' into gaodek…
a420355244 Mar 5, 2017
0fd8a37
submit litestruts
a420355244 Mar 5, 2017
6153403
0305作业提交
Mar 5, 2017
62f094f
Merge remote-tracking branch 'refs/remotes/gaodekui/master'
Mar 5, 2017
7b33717
Merge pull request #34 from hilihan/master
gaodekui Mar 5, 2017
d298996
Merge pull request #33 from a420355244/master
gaodekui Mar 5, 2017
4261657
Merge pull request #32 from stevenshane/master
gaodekui Mar 5, 2017
6b9a7ef
Merge remote-tracking branch 'refs/remotes/onlyliuxin/master'
gaodekui Mar 6, 2017
6da9ba0
Merge branch 'master' of https://github.com/gaodekui/coding2017
gaodekui Mar 6, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions group16/1154151360/.classpath
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,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="lib" path="src/dom4j-1.6.1.jar"/>
<classpathentry kind="lib" path="src/junit-3.8.1.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
266 changes: 266 additions & 0 deletions group16/1154151360/src/com/array/ArrayUtil.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,266 @@
package com.array;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import com.sun.org.apache.xalan.internal.xsltc.compiler.sym;

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 int[] reverseArray(int[] origin){

int [] temp = new int [origin.length];

for (int i = 0; i < temp.length; i++){
temp [i] = origin [temp.length - 1 - i];
}

origin = temp;

return 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){

int newLength = 0;

for (int i = 0; i < oldArray.length ; i++){
if (oldArray[i] == 0)
newLength ++;
}

int [] newArray = new int [oldArray.length - newLength];
int index = 0;
for (int j = 0; j < oldArray.length; j++){
if (oldArray[j] != 0)
newArray[index++] = oldArray[j];
}

newArray = sort(newArray, 0, newArray.length - 1);
return newArray;
}

/**
* 给定两个已经排序好的整形数组, 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){

int newLength = array1.length + array2.length;
int [] newArray = new int [newLength];
System.arraycopy(array1, 0, newArray, 0, array1.length);
System.arraycopy(array2, 0, newArray, array1.length, array2.length);
Set<Integer> arraySet = new HashSet<Integer>();
for (int i = 0; i < newArray.length; i++){
arraySet.add(newArray[i]);
}
int [] tempArray = new int[arraySet.size()];
Iterator<Integer> iterator = arraySet.iterator();
int index = 0;
while (iterator.hasNext()){
tempArray[index++] = iterator.next();
}
newArray = sort(tempArray, 0, tempArray.length - 1);
return newArray;
}
/**
* 把一个已经存满数据的数组 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){
int [] newArray = new int[oldArray.length + size];
System.arraycopy(oldArray, 0, newArray, 0, size);
return newArray;
}

/**
* 斐波那契数列为: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){
if (max > 1){
List<Integer> array = new ArrayList<Integer>();
array.add(1);
array.add(1);
for(int i = 2;;i++){
array.add(array.get(i - 1) + array.get(i - 2));
if (array.get(i) > max){
array.remove(i);
break;
}
}
int [] result = returnArray(array);
return result;
}else{
int [] b = new int[]{};
return b;
}

}

/**
* 返回小于给定最大值max的所有素数数组
* 例如max = 23, 返回的数组为[2,3,5,7,11,13,17,19]
* @param max
* @return
*/
public int[] getPrimes(int max){
ArrayList<Integer> list1 = new ArrayList<Integer>();
ArrayList<Integer> list2 = new ArrayList<Integer>();
for (int i = 2; i < max; i++){
list1.add(i);
}

for (int m = 0; m < list1.size(); m++){
boolean flag = true;
for (int n = 2; n < list1.get(m); n++){
if (list1.get(m) % n == 0){
flag = false;
break;
}

}
if (flag)
list2.add(list1.get(m));
}

int [] result = returnArray(list2);

return result;
}

/**
* 所谓“完数”, 是指这个数恰好等于它的因子之和,例如6=1+2+3
* 给定一个最大值max, 返回一个数组, 数组中是小于max 的所有完数
* @param max
* @return
*/
public int[] getPerfectNumbers(int max){
ArrayList<Integer> array = new ArrayList<Integer>();
Map<Integer, ArrayList<Integer>> arrayMap = new HashMap<Integer, ArrayList<Integer>>();
ArrayList<Integer> array2 = new ArrayList<Integer>();
for (int i = 2; i < max; i++){
array.add(i);
}
for(int m = 0; m < array.size(); m++){
ArrayList<Integer> tempArray = new ArrayList<Integer>();
for (int n = 2; n < array.get(m);n++){
if (array.get(m) % n == 0)
tempArray.add(n);
}
arrayMap.put(array.get(m), tempArray);
}
for(Map.Entry<Integer, ArrayList<Integer>> entry: arrayMap.entrySet()){
Integer key = entry.getKey();
ArrayList<Integer> tempArray = entry.getValue();
Integer tempInt = 0;
for (Integer i:tempArray){
tempInt += i;
}
if (key == tempInt){
array2.add(key);
}
}
int [] result = returnArray(array2);

return result;
}

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

StringBuilder builder = new StringBuilder();

for (int i = 0; i < array.length; i++){
builder.append(array[i]);
builder.append(seperator);
}
builder.deleteCharAt(builder.length() - 1);
return builder.toString();
}
//***************************工具类*****************************************
public int [] returnArray( List list){
int [] result = new int[list.size()];
int index = 0;
Iterator<Integer> iterator = list.iterator();
while(iterator.hasNext()){
result[index++] = iterator.next();
}
return result;
}

//快速排序算法
public int [] sort (int [] array, int low, int height ){

int start = low;
int end = height;
int key = array[low];

while (end > start){
//从后往前遍历
while (end > start && array[end] >= key)
end--;

if (array[end] <= key){
int temp = array[end];
array[end] = array[start];
array[start] = temp;
}

//从前往后遍历
while(end > start && array[start] <= key)
start++;

if (array[start] >= key){
int temp = array[start];
array[start] = array[end];
array[end] = temp;
}
}

if(start > low)sort(array, low, start - 1);
if (end < height)sort(array, end + 1, height);

return array;
}
//******************************************************************8
}
102 changes: 102 additions & 0 deletions group16/1154151360/src/com/array/ArrayUtilTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
package com.array;

import static org.junit.Assert.*;
import junit.framework.Assert;

import org.junit.Before;
import org.junit.Test;
@SuppressWarnings("deprecation")
public class ArrayUtilTest {

ArrayUtil util;

@Before
public void init(){
util = new ArrayUtil();
}

@Test
public void test_reverseArray() {
int [] a = {7, 9, 30, 3, 4};
a = util.reverseArray(a);
Assert.assertEquals("[4,3,30,9,7]", toString(a));
}

@Test
public void test_removeZero(){
int [] oldArr={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};

oldArr = util.removeZero(oldArr);

Assert.assertEquals("[1,3,4,5,6,6,5,4,7,6,7,5]", toString(oldArr));
}


@Test
public void test_merge(){
int [] a1 = {3, 5, 7,8};
int [] a2 = {4, 5, 6,7};
int [] a3 = util.merge(a1, a2);

Assert.assertEquals("[3,4,5,6,7,8]", toString(a3));

}

@Test
public void test_grow(){
int [] oldArray = {2,3,6};
int size = 3;
int [] newArray = util.grow(oldArray, size);

Assert.assertEquals("[2,3,6,0,0,0]", toString(newArray));
}


@Test
public void test_fibonacci(){

int [] array = util.fibonacci(15);

Assert.assertEquals("[1,1,2,3,5,8,13]", toString(array));

}


@Test
public void test_getPrimes(){

int [] array = util.getPrimes(23);
Assert.assertEquals("[2,3,5,7,11,13,17,19]", toString(array));

}

@Test
public void test_getPerfectNumbers(){
int [] array = util.getPerfectNumbers(10);

Assert.assertEquals("[6]", toString(array));

}

@Test
public void test_join(){

int [] array = {3,8,9};
String result = util.join(array, "-");
Assert.assertEquals("3-8-9", result);
}


public String toString(int [] array){
StringBuilder builder = new StringBuilder();
builder.append("[");
for(int item: array){
builder.append(item)
.append(",");
}
builder.replace(builder.length() - 1, builder.length(), "");
builder.append("]");
return builder.toString();

}
}
Loading