diff --git a/Algorithm/.classpath b/java/.classpath similarity index 98% rename from Algorithm/.classpath rename to java/.classpath index 4c3b63b..27940d2 100644 --- a/Algorithm/.classpath +++ b/java/.classpath @@ -1,11 +1,11 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/Algorithm/.gitignore b/java/.gitignore similarity index 100% rename from Algorithm/.gitignore rename to java/.gitignore diff --git a/Algorithm/.project b/java/.project similarity index 95% rename from Algorithm/.project rename to java/.project index 62a9089..dbc8543 100644 --- a/Algorithm/.project +++ b/java/.project @@ -1,17 +1,17 @@ - - - Algorithm - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - - + + + Algorithm + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/Algorithm/.settings/org.eclipse.jdt.core.prefs b/java/.settings/org.eclipse.jdt.core.prefs similarity index 98% rename from Algorithm/.settings/org.eclipse.jdt.core.prefs rename to java/.settings/org.eclipse.jdt.core.prefs index bb35fa0..3a21537 100644 --- a/Algorithm/.settings/org.eclipse.jdt.core.prefs +++ b/java/.settings/org.eclipse.jdt.core.prefs @@ -1,11 +1,11 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.8 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.8 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/Algorithm/src/main/java/binarytree/AVLTree.java b/java/src/main/java/binarytree/AVLTree.java similarity index 91% rename from Algorithm/src/main/java/binarytree/AVLTree.java rename to java/src/main/java/binarytree/AVLTree.java index cfa634b..c7188c6 100644 --- a/Algorithm/src/main/java/binarytree/AVLTree.java +++ b/java/src/main/java/binarytree/AVLTree.java @@ -1,15 +1,15 @@ -/** -* AVLTree.java -*/ -package binarytree; - -/** - * - * @author LiuChen - * @date 2016年11月25日 下午4:39:21 - * - */ - -public class AVLTree extends BinaryTree { - -} +/** +* AVLTree.java +*/ +package binarytree; + +/** + * + * @author LiuChen + * @date 2016年11月25日 下午4:39:21 + * + */ + +public class AVLTree extends BinaryTree { + +} diff --git a/Algorithm/src/main/java/binarytree/BinarySearchTree.java b/java/src/main/java/binarytree/BinarySearchTree.java similarity index 96% rename from Algorithm/src/main/java/binarytree/BinarySearchTree.java rename to java/src/main/java/binarytree/BinarySearchTree.java index d902d1c..41c747d 100644 --- a/Algorithm/src/main/java/binarytree/BinarySearchTree.java +++ b/java/src/main/java/binarytree/BinarySearchTree.java @@ -1,119 +1,119 @@ -/** -* BinarySearchTree.java -*/ -package binarytree; - -/** - * - * @author LiuChen - * @date 2016年11月24日 下午4:34:20 - * - */ - -public class BinarySearchTree extends BinaryTree { - - /** - * Insert a node into binary search tree. - * - * @param value - * @return - */ - public BinarySearchTree insertSearch(Integer value) { - BinaryTreeNode newNode = new BinaryTreeNode(value); - if(this.root == null) { - this.root = newNode; - return this; - } - BinaryTreeNode temp = this.root; - while(temp != null) { - if(temp.getValue() == value) { - return this; - } else if(temp.getValue() < value) { - if(temp.getRightNode() == null) { - temp.setRightNode(newNode); - break; - } - temp = temp.getRightNode(); - } else { - if(temp.getLeftNode() == null) { - temp.setLeftNode(newNode); - break; - } - temp = temp.getLeftNode(); - } - } - return this; - } - - /** - * Remove node - * - * @param node - * @param value - * @return - */ - public BinaryTreeNode remove(BinaryTreeNode node, Integer value) { - if(node == null) { - return null; - } - if(node.getValue() > value) { - node.setLeftNode(remove(node.getLeftNode(), value)); - } - if(node.getValue() < value) { - node.setRightNode(remove(node.getRightNode(), value)); - } - if(node.getValue() == value) { - if(node.getLeftNode() != null && node.getRightNode() != null) { // Two children -// node = TODO - } else { // Single child or no child - node = node.getLeftNode() == null ? node.getRightNode() : node.getLeftNode(); - } - } - - return node; - } - - /** - * Search parent node by value. - * - * @param node - * @param value - * @return - */ - public BinaryTreeNode searchParentNode(BinaryTreeNode node, Integer value) { - if(node == null || node.getValue() == value) { // is null or is root. - return null; - } - if(node.getLeftNode() != null && node.getLeftNode().getValue() == value) { // Left child's value equals to - return node; - } - if(node.getRightNode() != null && node.getRightNode().getValue() == value) { // Right child's value equals to - return node; - } - if(node.getValue() > value) { // Search in left child tree. - return searchParentNode(node.getLeftNode(), value); - } else { // Search in right child tree. - return searchParentNode(node.getRightNode(), value); - } - } - - /** - * Search node by value - * - * @param node - * @param value - * @return - */ - public BinaryTreeNode searchNode(BinaryTreeNode node, Integer value) { - if(node == null) { - return null; - } - if(node.getValue() == value) { - return node; - } else if(node.getValue() < value) { - return searchNode(node.getRightNode(), value); - } else { - return searchNode(node.getLeftNode(), value); - } - } -} +/** +* BinarySearchTree.java +*/ +package binarytree; + +/** + * + * @author LiuChen + * @date 2016年11月24日 下午4:34:20 + * + */ + +public class BinarySearchTree extends BinaryTree { + + /** + * Insert a node into binary search tree. + * + * @param value + * @return + */ + public BinarySearchTree insertSearch(Integer value) { + BinaryTreeNode newNode = new BinaryTreeNode(value); + if(this.root == null) { + this.root = newNode; + return this; + } + BinaryTreeNode temp = this.root; + while(temp != null) { + if(temp.getValue() == value) { + return this; + } else if(temp.getValue() < value) { + if(temp.getRightNode() == null) { + temp.setRightNode(newNode); + break; + } + temp = temp.getRightNode(); + } else { + if(temp.getLeftNode() == null) { + temp.setLeftNode(newNode); + break; + } + temp = temp.getLeftNode(); + } + } + return this; + } + + /** + * Remove node + * + * @param node + * @param value + * @return + */ + public BinaryTreeNode remove(BinaryTreeNode node, Integer value) { + if(node == null) { + return null; + } + if(node.getValue() > value) { + node.setLeftNode(remove(node.getLeftNode(), value)); + } + if(node.getValue() < value) { + node.setRightNode(remove(node.getRightNode(), value)); + } + if(node.getValue() == value) { + if(node.getLeftNode() != null && node.getRightNode() != null) { // Two children +// node = TODO + } else { // Single child or no child + node = node.getLeftNode() == null ? node.getRightNode() : node.getLeftNode(); + } + } + + return node; + } + + /** + * Search parent node by value. + * + * @param node + * @param value + * @return + */ + public BinaryTreeNode searchParentNode(BinaryTreeNode node, Integer value) { + if(node == null || node.getValue() == value) { // is null or is root. + return null; + } + if(node.getLeftNode() != null && node.getLeftNode().getValue() == value) { // Left child's value equals to + return node; + } + if(node.getRightNode() != null && node.getRightNode().getValue() == value) { // Right child's value equals to + return node; + } + if(node.getValue() > value) { // Search in left child tree. + return searchParentNode(node.getLeftNode(), value); + } else { // Search in right child tree. + return searchParentNode(node.getRightNode(), value); + } + } + + /** + * Search node by value + * + * @param node + * @param value + * @return + */ + public BinaryTreeNode searchNode(BinaryTreeNode node, Integer value) { + if(node == null) { + return null; + } + if(node.getValue() == value) { + return node; + } else if(node.getValue() < value) { + return searchNode(node.getRightNode(), value); + } else { + return searchNode(node.getLeftNode(), value); + } + } +} diff --git a/Algorithm/src/main/java/binarytree/BinaryTree.java b/java/src/main/java/binarytree/BinaryTree.java similarity index 96% rename from Algorithm/src/main/java/binarytree/BinaryTree.java rename to java/src/main/java/binarytree/BinaryTree.java index 84e5b7e..86da800 100644 --- a/Algorithm/src/main/java/binarytree/BinaryTree.java +++ b/java/src/main/java/binarytree/BinaryTree.java @@ -1,121 +1,121 @@ -/** -* BinaryTree.java -*/ -package binarytree; - -/** - * Binary tree - * @author LiuChen - * @date 2016年11月24日 上午11:05:22 - * - */ - -public class BinaryTree { - protected BinaryTreeNode root; - - public BinaryTree() { - this.root = null; - } - - public BinaryTree(T value) { - this.root = new BinaryTreeNode(value); - } - - public BinaryTreeNode getRoot() { - return this.root; - } - - /** - * Insert a node into tree. - * - * @param value - * @return - */ - public BinaryTree insert(T value) { - BinaryTreeNode newNode = new BinaryTreeNode(value); - if(this.root == null) { - this.root = newNode; - return this; - } - BinaryTreeNode temp = this.root; - while(temp.getLeftNode() != null) { - if(temp.getRightNode() == null) { - temp.setRightNode(newNode); - return this; - } - temp = temp.getLeftNode(); - } - temp.setLeftNode(newNode); - return this; - } - - /** - * Get node count. - * @param node - * @return - */ - public int getNodeCount(BinaryTreeNode node) { - if(node == null) { - return 0; - } - return getNodeCount(node.getLeftNode()) + getNodeCount(node.getRightNode()) + 1; - } - - /** - * Get tree's depth. - * @param node - * @return - */ - public int getDepth(BinaryTreeNode node) { - if(node == null) { - return 0; - } - int depthLeft = getDepth(node.getLeftNode()); - int depthRight = getDepth(node.getRightNode()); - - return depthLeft > depthRight ? (depthLeft + 1) : (depthRight + 1); - } - - public void visit(BinaryTreeNode node) { - System.out.print("NODE[" + node.getValue() + "]-->"); - } - - /** - * PreOrderTraverse - * @param root - */ - public void preOrderTraverse(BinaryTreeNode root) { - if(root == null) { - return; - } - this.visit(root); // visit root node - preOrderTraverse(root.getLeftNode()); // visit left child tree - preOrderTraverse(root.getRightNode()); // visit right child tree - } - - /** - * InOrderTraverse - * @param root - */ - public void inOrderTraverse(BinaryTreeNode root) { - if(root == null) { - return; - } - inOrderTraverse(root.getLeftNode()); // visit left child tree - this.visit(root); // visit root node - inOrderTraverse(root.getRightNode()); // visit right child tree - } - - /** - * PostOrderTraverse - * @param root - */ - public void postOrderTraverse(BinaryTreeNode root) { - if(root == null) { - return; - } - postOrderTraverse(root.getLeftNode()); // visit left child tree - postOrderTraverse(root.getRightNode()); // visit right child tree - this.visit(root); // visit root node - } -} +/** +* BinaryTree.java +*/ +package binarytree; + +/** + * Binary tree + * @author LiuChen + * @date 2016年11月24日 上午11:05:22 + * + */ + +public class BinaryTree { + protected BinaryTreeNode root; + + public BinaryTree() { + this.root = null; + } + + public BinaryTree(T value) { + this.root = new BinaryTreeNode(value); + } + + public BinaryTreeNode getRoot() { + return this.root; + } + + /** + * Insert a node into tree. + * + * @param value + * @return + */ + public BinaryTree insert(T value) { + BinaryTreeNode newNode = new BinaryTreeNode(value); + if(this.root == null) { + this.root = newNode; + return this; + } + BinaryTreeNode temp = this.root; + while(temp.getLeftNode() != null) { + if(temp.getRightNode() == null) { + temp.setRightNode(newNode); + return this; + } + temp = temp.getLeftNode(); + } + temp.setLeftNode(newNode); + return this; + } + + /** + * Get node count. + * @param node + * @return + */ + public int getNodeCount(BinaryTreeNode node) { + if(node == null) { + return 0; + } + return getNodeCount(node.getLeftNode()) + getNodeCount(node.getRightNode()) + 1; + } + + /** + * Get tree's depth. + * @param node + * @return + */ + public int getDepth(BinaryTreeNode node) { + if(node == null) { + return 0; + } + int depthLeft = getDepth(node.getLeftNode()); + int depthRight = getDepth(node.getRightNode()); + + return depthLeft > depthRight ? (depthLeft + 1) : (depthRight + 1); + } + + public void visit(BinaryTreeNode node) { + System.out.print("NODE[" + node.getValue() + "]-->"); + } + + /** + * PreOrderTraverse + * @param root + */ + public void preOrderTraverse(BinaryTreeNode root) { + if(root == null) { + return; + } + this.visit(root); // visit root node + preOrderTraverse(root.getLeftNode()); // visit left child tree + preOrderTraverse(root.getRightNode()); // visit right child tree + } + + /** + * InOrderTraverse + * @param root + */ + public void inOrderTraverse(BinaryTreeNode root) { + if(root == null) { + return; + } + inOrderTraverse(root.getLeftNode()); // visit left child tree + this.visit(root); // visit root node + inOrderTraverse(root.getRightNode()); // visit right child tree + } + + /** + * PostOrderTraverse + * @param root + */ + public void postOrderTraverse(BinaryTreeNode root) { + if(root == null) { + return; + } + postOrderTraverse(root.getLeftNode()); // visit left child tree + postOrderTraverse(root.getRightNode()); // visit right child tree + this.visit(root); // visit root node + } +} diff --git a/Algorithm/src/main/java/binarytree/BinaryTreeNode.java b/java/src/main/java/binarytree/BinaryTreeNode.java similarity index 95% rename from Algorithm/src/main/java/binarytree/BinaryTreeNode.java rename to java/src/main/java/binarytree/BinaryTreeNode.java index 29df063..900a6ae 100644 --- a/Algorithm/src/main/java/binarytree/BinaryTreeNode.java +++ b/java/src/main/java/binarytree/BinaryTreeNode.java @@ -1,53 +1,53 @@ -/** -* BinaryTreeNode.java -*/ -package binarytree; - -/** - * The node of binary tree. - * @author LiuChen - * @date 2016年11月24日 上午11:03:42 - * - */ - -public class BinaryTreeNode { - private T value; - private BinaryTreeNode leftNode; - private BinaryTreeNode rightNode; - - public BinaryTreeNode() { - this.leftNode = null; - this.rightNode = null; - } - - public BinaryTreeNode(T value) { - this.value = value; - this.leftNode = null; - this.rightNode = null; - } - - public T getValue() { - return value; - } - public void setValue(T value) { - this.value = value; - } - public BinaryTreeNode getLeftNode() { - return leftNode; - } - public void setLeftNode(BinaryTreeNode leftNode) { - this.leftNode = leftNode; - } - public BinaryTreeNode getRightNode() { - return rightNode; - } - public void setRightNode(BinaryTreeNode rightNode) { - this.rightNode = rightNode; - } - - @Override - public String toString() { - return "BinaryTreeNode [value=" + value + ", leftNode=" + leftNode - + ", rightNode=" + rightNode + "]"; - } -} +/** +* BinaryTreeNode.java +*/ +package binarytree; + +/** + * The node of binary tree. + * @author LiuChen + * @date 2016年11月24日 上午11:03:42 + * + */ + +public class BinaryTreeNode { + private T value; + private BinaryTreeNode leftNode; + private BinaryTreeNode rightNode; + + public BinaryTreeNode() { + this.leftNode = null; + this.rightNode = null; + } + + public BinaryTreeNode(T value) { + this.value = value; + this.leftNode = null; + this.rightNode = null; + } + + public T getValue() { + return value; + } + public void setValue(T value) { + this.value = value; + } + public BinaryTreeNode getLeftNode() { + return leftNode; + } + public void setLeftNode(BinaryTreeNode leftNode) { + this.leftNode = leftNode; + } + public BinaryTreeNode getRightNode() { + return rightNode; + } + public void setRightNode(BinaryTreeNode rightNode) { + this.rightNode = rightNode; + } + + @Override + public String toString() { + return "BinaryTreeNode [value=" + value + ", leftNode=" + leftNode + + ", rightNode=" + rightNode + "]"; + } +} diff --git a/Algorithm/src/main/java/sort/BubbleSort.java b/java/src/main/java/sort/BubbleSort.java similarity index 90% rename from Algorithm/src/main/java/sort/BubbleSort.java rename to java/src/main/java/sort/BubbleSort.java index 6b6d428..c06c739 100644 --- a/Algorithm/src/main/java/sort/BubbleSort.java +++ b/java/src/main/java/sort/BubbleSort.java @@ -1,15 +1,15 @@ -/** -* BubbleSort.java -*/ -package sort; - -/** - * - * @author LiuChen - * @date 2016年11月28日 下午3:05:55 - * - */ - -public class BubbleSort { - -} +/** +* BubbleSort.java +*/ +package sort; + +/** + * + * @author LiuChen + * @date 2016年11月28日 下午3:05:55 + * + */ + +public class BubbleSort { + +} diff --git a/Algorithm/src/test/java/test/binarytree/UnitTest.java b/java/src/test/java/test/binarytree/UnitTest.java similarity index 95% rename from Algorithm/src/test/java/test/binarytree/UnitTest.java rename to java/src/test/java/test/binarytree/UnitTest.java index af31af1..5d87e65 100644 --- a/Algorithm/src/test/java/test/binarytree/UnitTest.java +++ b/java/src/test/java/test/binarytree/UnitTest.java @@ -1,39 +1,39 @@ -/** -* UnitTest.java -*/ -package test.binarytree; - -import org.junit.Test; - -import binarytree.BinaryTree; - -/** - * - * @author LiuChen - * @date 2016年11月24日 下午2:35:16 - * - */ - -public class UnitTest { - public static BinaryTree iTree = new BinaryTree(); - static { - iTree.insert("a").insert("b").insert("c").insert("d").insert("e").insert("f").insert("g").insert("h").insert("i"); - } - - @Test - public void testTraverse() { - iTree.preOrderTraverse(iTree.getRoot());System.out.println(); - iTree.inOrderTraverse(iTree.getRoot());System.out.println(); - iTree.postOrderTraverse(iTree.getRoot());System.out.println(); - } - - @Test - public void testGetNodeCount() { - System.out.println(iTree.getNodeCount(iTree.getRoot())); - } - - @Test - public void testGetDepth() { - System.out.println(iTree.getDepth(iTree.getRoot())); - } -} +/** +* UnitTest.java +*/ +package test.binarytree; + +import org.junit.Test; + +import binarytree.BinaryTree; + +/** + * + * @author LiuChen + * @date 2016年11月24日 下午2:35:16 + * + */ + +public class UnitTest { + public static BinaryTree iTree = new BinaryTree(); + static { + iTree.insert("a").insert("b").insert("c").insert("d").insert("e").insert("f").insert("g").insert("h").insert("i"); + } + + @Test + public void testTraverse() { + iTree.preOrderTraverse(iTree.getRoot());System.out.println(); + iTree.inOrderTraverse(iTree.getRoot());System.out.println(); + iTree.postOrderTraverse(iTree.getRoot());System.out.println(); + } + + @Test + public void testGetNodeCount() { + System.out.println(iTree.getNodeCount(iTree.getRoot())); + } + + @Test + public void testGetDepth() { + System.out.println(iTree.getDepth(iTree.getRoot())); + } +} diff --git a/Algorithm/src/test/java/test/binarytree/search/UnitTest.java b/java/src/test/java/test/binarytree/search/UnitTest.java similarity index 96% rename from Algorithm/src/test/java/test/binarytree/search/UnitTest.java rename to java/src/test/java/test/binarytree/search/UnitTest.java index d260a3a..894afeb 100644 --- a/Algorithm/src/test/java/test/binarytree/search/UnitTest.java +++ b/java/src/test/java/test/binarytree/search/UnitTest.java @@ -1,43 +1,43 @@ -/** -* UnitTest.java -*/ -package test.binarytree.search; - -import org.junit.Test; - -import binarytree.BinarySearchTree; - -/** - * - * @author LiuChen - * @date 2016年11月24日 下午4:38:46 - * - */ - -public class UnitTest { - private static BinarySearchTree iTree = new BinarySearchTree(); - - static { - iTree.insertSearch(6).insertSearch(3).insertSearch(4).insertSearch(5).insertSearch(1).insertSearch(2); -// for(int i=0; i<1000; i++) { -// iTree.insertSearch(Double.valueOf(Math.floor(Math.random()*1000)).intValue()); -// } - } - - @Test - public void testTraverse() { - iTree.preOrderTraverse(iTree.getRoot());System.out.println(); - iTree.inOrderTraverse(iTree.getRoot());System.out.println(); - iTree.postOrderTraverse(iTree.getRoot());System.out.println(); - } - - @Test - public void testSearch() { - System.out.println(iTree.searchNode(iTree.getRoot(), 123)); - } - - @Test - public void testSearchParent() { - System.out.println(iTree.searchParentNode(iTree.getRoot(), 7)); - } -} +/** +* UnitTest.java +*/ +package test.binarytree.search; + +import org.junit.Test; + +import binarytree.BinarySearchTree; + +/** + * + * @author LiuChen + * @date 2016年11月24日 下午4:38:46 + * + */ + +public class UnitTest { + private static BinarySearchTree iTree = new BinarySearchTree(); + + static { + iTree.insertSearch(6).insertSearch(3).insertSearch(4).insertSearch(5).insertSearch(1).insertSearch(2); +// for(int i=0; i<1000; i++) { +// iTree.insertSearch(Double.valueOf(Math.floor(Math.random()*1000)).intValue()); +// } + } + + @Test + public void testTraverse() { + iTree.preOrderTraverse(iTree.getRoot());System.out.println(); + iTree.inOrderTraverse(iTree.getRoot());System.out.println(); + iTree.postOrderTraverse(iTree.getRoot());System.out.println(); + } + + @Test + public void testSearch() { + System.out.println(iTree.searchNode(iTree.getRoot(), 123)); + } + + @Test + public void testSearchParent() { + System.out.println(iTree.searchParentNode(iTree.getRoot(), 7)); + } +} diff --git a/python/mergeSort.py b/python/mergeSort.py new file mode 100644 index 0000000..9931b74 --- /dev/null +++ b/python/mergeSort.py @@ -0,0 +1,38 @@ +# mergeSort.py +import math +max = 10000000 + +def merge_sort(A, p, r): + if p < r: + q = math.floor((p + r) / 2) + merge_sort(A, p, q) + merge_sort(A, q + 1, r) + merge(A, p, q, r) + +def merge(A, p, q, r): + L = A[p : q + 1] + R = A[q + 1 : r + 1] + L.append(max) + R.append(max) + i = 0 + j = 0 + for k in range(p, r + 1): + if L[i] <= R[j]: + A[k] = L[i] + i = i + 1 + else: + A[k] = R[j] + j = j + 1 + L.pop() + R.pop() + print(p, q, r, L, '->', R, '->', A) + +# A = [1, 3, 5, 7, 9, 2, 4, 6, 8, 10] +# A = [9, 7 ,5, 3, 1, 10, 8, 6, 4, 2] +A = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] +merge_sort(A, 0, 9) +print(A) + +# B = [9, 10, 7] +# merge(B, 0, 2, 3) +# print(B) \ No newline at end of file