diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..f0c32f9c471c976a320131fc6e656064614a136c
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/.project b/.project
new file mode 100644
index 0000000000000000000000000000000000000000..1fe9fc90d489017efa93f80270255fac6a197d6c
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+
+
+ lec07-heap
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..99f26c0203a7844de00dbfc56e6a35d8ed3c022c
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/=UTF-8
diff --git "a/\345\237\272\347\241\200\344\275\234\344\270\232/.gitignore" "b/\345\237\272\347\241\200\344\275\234\344\270\232/.gitignore"
new file mode 100644
index 0000000000000000000000000000000000000000..7fd76dec8bc60562d54ee2e2ffab6f0e25c75b86
--- /dev/null
+++ "b/\345\237\272\347\241\200\344\275\234\344\270\232/.gitignore"
@@ -0,0 +1,2 @@
+/Heap.class
+/Mian.class
diff --git "a/\345\237\272\347\241\200\344\275\234\344\270\232/Heap.class" "b/\345\237\272\347\241\200\344\275\234\344\270\232/Heap.class"
new file mode 100644
index 0000000000000000000000000000000000000000..4e4fad222cf699818455ca553964f1d9558c9591
Binary files /dev/null and "b/\345\237\272\347\241\200\344\275\234\344\270\232/Heap.class" differ
diff --git "a/\345\237\272\347\241\200\344\275\234\344\270\232/Heap.java" "b/\345\237\272\347\241\200\344\275\234\344\270\232/Heap.java"
new file mode 100644
index 0000000000000000000000000000000000000000..9c11512d2101c4598a7d92f422802f2e9cecf5c0
--- /dev/null
+++ "b/\345\237\272\347\241\200\344\275\234\344\270\232/Heap.java"
@@ -0,0 +1,120 @@
+
+
+public class Heap{
+ private int[] heap;
+ private int SIZE;
+ private int count;
+
+
+ Heap(int size){
+ SIZE = size;
+ // reference: https://stackoverflow.com/questions/34827626/cannot-be-cast-to-ljava-lang-comparable
+ heap = new int[SIZE];
+ count = 0;
+ }
+//小顶堆的实现
+//入堆函数
+ public void add (int item){
+ if(count >= SIZE){
+ // throw new Exception("Heap Overflow");
+ System.out.println("Heap Full");//满了
+ return;
+ }
+ heap[count] = item;
+ count++;
+ shiftUp(heap, count - 1);
+
+ }
+//向下调整
+ private static void shiftDown(int[] array, int size, int index) {
+ int parent = index;
+ int child = parent * 2 + 1;
+ while (child < size) {
+ if (child + 1 < size && array[child + 1] < array[child]) {
+ child = child + 1;
+ }
+ if (array[child] < array[parent]) {
+ swap(array, parent, child);
+ } else {
+ break;
+ }
+ parent = child;
+ child = parent * 2 + 1;
+ }
+ }
+
+ //向上调整
+ private void shiftUp(int[] array, int index) {
+ int child = index;
+ int parent = (child - 1) / 2;
+ while (child > 0) {
+ if (heap[parent]>heap[child]) {
+ swap(heap, parent, child);
+ }else {
+ break;
+ }
+ child = parent;
+ parent = (child - 1) / 2;
+ }
+ }
+
+ //交换
+ private static void swap(int[] array, int x, int y) {
+ int temp = array[x];
+ array[x] = array[y];
+ array[y] = temp;
+ }
+
+
+//出堆函数
+ public void delete(int item){
+ if (count == 0) {
+ System.out.println("count=0,heap是空的");
+ }
+ for (int i = 0; i < heap.length; i++) {
+ if (heap[i]==item) {
+ heap[i]=heap[count-1];
+ count--;
+ shiftDown(heap, count,i);
+ }
+
+ }
+
+ }
+
+
+//打印堆
+ public void print(){
+ if (count == 0) {
+ return ;
+ }
+ System.out.println("heap中有这些数据:");
+ for (int i = 0; i heap[j]){
+// int temp=heap[i];
+// heap[i]=heap[j];
+// heap[j]=temp;
+// }
+// }
+// }
+//
+//}
+//
+//
+ }
diff --git "a/\345\237\272\347\241\200\344\275\234\344\270\232/Mian.class" "b/\345\237\272\347\241\200\344\275\234\344\270\232/Mian.class"
new file mode 100644
index 0000000000000000000000000000000000000000..274ea26a872c68344f0d3c8eee9c1df2425b0a82
Binary files /dev/null and "b/\345\237\272\347\241\200\344\275\234\344\270\232/Mian.class" differ
diff --git "a/\345\237\272\347\241\200\344\275\234\344\270\232/Mian.java" "b/\345\237\272\347\241\200\344\275\234\344\270\232/Mian.java"
new file mode 100644
index 0000000000000000000000000000000000000000..8eb4fddbd73af01ea70b252e498719e8b0f9101c
--- /dev/null
+++ "b/\345\237\272\347\241\200\344\275\234\344\270\232/Mian.java"
@@ -0,0 +1,21 @@
+
+public class Mian {
+
+ public static void main(String[] args) {
+ // TODO 自动生成的方法存根
+ Heap aa = new Heap(10);
+ aa.add(5);
+ aa.add(3);
+ aa.add(9);
+ aa.add(6);
+ aa.add(15);
+ aa.add(4);
+ aa.add(11);
+ aa.add(16);
+ aa.print();
+ aa.delete(5);
+ aa.print();
+
+ }
+
+}
diff --git "a/\345\237\272\347\241\200\344\275\234\344\270\232/\345\244\247\351\241\266\345\240\206/.gitignore" "b/\345\237\272\347\241\200\344\275\234\344\270\232/\345\244\247\351\241\266\345\240\206/.gitignore"
new file mode 100644
index 0000000000000000000000000000000000000000..7fd76dec8bc60562d54ee2e2ffab6f0e25c75b86
--- /dev/null
+++ "b/\345\237\272\347\241\200\344\275\234\344\270\232/\345\244\247\351\241\266\345\240\206/.gitignore"
@@ -0,0 +1,2 @@
+/Heap.class
+/Mian.class
diff --git "a/\345\237\272\347\241\200\344\275\234\344\270\232/\345\244\247\351\241\266\345\240\206/Heap.java" "b/\345\237\272\347\241\200\344\275\234\344\270\232/\345\244\247\351\241\266\345\240\206/Heap.java"
new file mode 100644
index 0000000000000000000000000000000000000000..0586ce0f6549f3a6010da0f6fde1b1e657bbaff6
--- /dev/null
+++ "b/\345\237\272\347\241\200\344\275\234\344\270\232/\345\244\247\351\241\266\345\240\206/Heap.java"
@@ -0,0 +1,121 @@
+package 大顶堆;
+
+
+public class Heap{
+ private int[] heap;
+ private int SIZE;
+ private int count;
+
+
+ Heap(int size){
+ SIZE = size;
+ // reference: https://stackoverflow.com/questions/34827626/cannot-be-cast-to-ljava-lang-comparable
+ heap = new int[SIZE];
+ count = 0;
+ }
+//大顶堆的实现
+//入堆函数
+ public void add (int item){
+ if(count >= SIZE){
+ // throw new Exception("Heap Overflow");
+ System.out.println("Heap Full");//满了
+ return;
+ }
+ heap[count] = item;
+ count++;
+ shiftUp(heap, count - 1);
+
+ }
+//向下调整
+ private static void shiftDown(int[] array, int size, int index) {
+ int parent = index;
+ int child = parent * 2 + 1;
+ while (child < size) {
+ if (child + 1 < size && array[child + 1] > array[child]) {
+ child = child + 1;
+ }
+ if (array[child] > array[parent]) {
+ swap(array, parent, child);
+ } else {
+ break;
+ }
+ parent = child;
+ child = parent * 2 + 1;
+ }
+ }
+
+ //向上调整
+ private void shiftUp(int[] array, int index) {
+ int child = index;
+ int parent = (child - 1) / 2;
+ while (child > 0) {
+ if (heap[parent]>heap[child]) {
+ swap(heap, parent, child);
+ }else {
+ break;
+ }
+ child = parent;
+ parent = (child - 1) / 2;
+ }
+ }
+
+ //交换
+ private static void swap(int[] array, int x, int y) {
+ int temp = array[x];
+ array[x] = array[y];
+ array[y] = temp;
+ }
+
+
+//出堆函数
+ public void delete(int item){
+ if (count == 0) {
+ System.out.println("count=0,heap是空的");
+ }
+ for (int i = 0; i < heap.length; i++) {
+ if (heap[i]==item) {
+ heap[i]=heap[count-1];
+ count--;
+ shiftDown(heap, count,0);
+ }
+
+ }
+
+ }
+
+
+//打印堆
+ public void print(){
+ if (count == 0) {
+ return ;
+ }
+ System.out.println("heap中有这些数据:");
+ for (int i = 0; i heap[j]){
+// int temp=heap[i];
+// heap[i]=heap[j];
+// heap[j]=temp;
+// }
+// }
+// }
+//
+//}
+//
+//
+ }
diff --git "a/\345\237\272\347\241\200\344\275\234\344\270\232/\345\244\247\351\241\266\345\240\206/Mian.java" "b/\345\237\272\347\241\200\344\275\234\344\270\232/\345\244\247\351\241\266\345\240\206/Mian.java"
new file mode 100644
index 0000000000000000000000000000000000000000..4ecb71463385187d9882985f35e7d147c09fab34
--- /dev/null
+++ "b/\345\237\272\347\241\200\344\275\234\344\270\232/\345\244\247\351\241\266\345\240\206/Mian.java"
@@ -0,0 +1,26 @@
+package 大顶堆;
+
+public class Mian {
+
+ public static void main(String[] args) {
+ // TODO 自动生成的方法存根
+ Heap aa = new Heap(10);
+ aa.add(5);
+ aa.add(3);
+ aa.add(9);
+ aa.add(6);
+ aa.add(15);
+ aa.add(4);
+ aa.add(11);
+ aa.add(16);
+ aa.print();
+ aa.delete(16);
+ aa.print();
+ aa.delete(15);
+ aa.print();
+ aa.delete(11);
+ aa.print();
+
+ }
+
+}
diff --git "a/\350\277\233\351\230\266\344\275\234\344\270\232/MergeK.class" "b/\350\277\233\351\230\266\344\275\234\344\270\232/MergeK.class"
new file mode 100644
index 0000000000000000000000000000000000000000..c44b5a92923ea91223bedf9c22af300e81fc7f93
Binary files /dev/null and "b/\350\277\233\351\230\266\344\275\234\344\270\232/MergeK.class" differ
diff --git "a/\350\277\233\351\230\266\344\275\234\344\270\232/MergeK.java" "b/\350\277\233\351\230\266\344\275\234\344\270\232/MergeK.java"
new file mode 100644
index 0000000000000000000000000000000000000000..09d3c16b6a1e0fcfe35cb4366b866d42426658cc
--- /dev/null
+++ "b/\350\277\233\351\230\266\344\275\234\344\270\232/MergeK.java"
@@ -0,0 +1,68 @@
+package 进阶作业;
+
+import java.util.Arrays;
+
+/**
+ 合并K个有序数组
+ */
+public class MergeK {
+
+ public static int[] merge(int[] arr1, int[] arr2){
+ int length1 = arr1.length;
+ int length2 = arr2.length;
+
+ int[] arr = new int[length1 + length2];
+ int j = 0;
+ int k = 0;
+ int i = 0;
+ while (j < length1 && k < length2){
+ if (arr1[j] <= arr2[k]){
+ arr[i] = arr1[j];
+ i++;
+ j++;
+ }else {
+ arr[i] = arr2[k];
+ i++;
+ k++;
+ }
+ }
+
+ //把还没有进行合并的元素直接添加到新数组的后面,可能出现一个数组有剩,另一个数组合并完毕
+ while (j < length1){
+ arr[i] = arr1[j];
+ i++;
+ j++;
+ }
+ while (k < length2){
+ arr[i] = arr2[k];
+ i++;
+ k++;
+ }
+
+ return arr;
+ }
+ //2.求⼀组动态数据集合的最⼤Top K
+ public static void topK(int[] merge,int k) {
+ int[] toparr = new int[k];
+ for (int i = 0; i < k; i++) {
+ toparr[i]=merge[i];
+
+ }
+ System.out.println(Arrays.toString(toparr));
+
+ }
+//测试
+ public static void main(String[] args) {
+ int[] arr1 = {1,3,5,6};
+ int[] arr2 = {1,2,5,7};
+ int[] arr3 = {3,6,9,11};
+ int[] arr4 = {5,7,13,17};
+
+ int[] merge1 = merge(arr1, arr2);
+ int[] merge2 = merge(arr3, arr4);
+ int[] merge = merge(merge1, merge2);
+ System.out.println(Arrays.toString(merge));
+ System.out.println("执行topK:");
+ MergeK.topK(merge, 5);
+ }
+}
\ No newline at end of file