From fbaaa51db31325255c96fc7fa983d3b11d923a16 Mon Sep 17 00:00:00 2001 From: wanghuan Date: Fri, 2 Nov 2018 10:33:08 +0800 Subject: [PATCH 1/3] modify --- ...63\225\345\210\206\346\236\220\345\237\272\347\241\200.md" | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git "a/\347\256\227\346\263\225\345\222\214\346\225\260\346\215\256\347\273\223\346\236\204\345\237\272\347\241\200/1 \347\256\227\346\263\225\345\210\206\346\236\220\345\237\272\347\241\200-Java/\347\256\227\346\263\225\345\210\206\346\236\220\345\237\272\347\241\200.md" "b/\347\256\227\346\263\225\345\222\214\346\225\260\346\215\256\347\273\223\346\236\204\345\237\272\347\241\200/1 \347\256\227\346\263\225\345\210\206\346\236\220\345\237\272\347\241\200-Java/\347\256\227\346\263\225\345\210\206\346\236\220\345\237\272\347\241\200.md" index 61a1d3d..f61569c 100644 --- "a/\347\256\227\346\263\225\345\222\214\346\225\260\346\215\256\347\273\223\346\236\204\345\237\272\347\241\200/1 \347\256\227\346\263\225\345\210\206\346\236\220\345\237\272\347\241\200-Java/\347\256\227\346\263\225\345\210\206\346\236\220\345\237\272\347\241\200.md" +++ "b/\347\256\227\346\263\225\345\222\214\346\225\260\346\215\256\347\273\223\346\236\204\345\237\272\347\241\200/1 \347\256\227\346\263\225\345\210\206\346\236\220\345\237\272\347\241\200-Java/\347\256\227\346\263\225\345\210\206\346\236\220\345\237\272\347\241\200.md" @@ -18,9 +18,9 @@ 首先需要明确,输入规模在算法效率分析过程中,是一个很重要的问题。因为,显然,在算法相同、计算机硬件相同的条件下,算法输入规模越大,运行时间越长(比如,数组越大,对数组排序需要的时间越长)。因此,算法效率和输入规模$n$紧密关联。 -那么,如何确定这个**输入规模$n$**呢? +那么,如何确定这个**输入规模$n$** 呢? -在大多数情况下,这是显而易见的。例如,对于排序、查找等列表相关的算法,输入规模$n$就是列表的长度。 + 不过,有时候,还是要根据算法细节,具体问题具体分析。比如,对于大数计算的问题,因为计算机存储是二进制形式的,所以可以用二进制的比特位数,来表示输入规模。 From ba046ad8d8ecbb87260d7420afbe41c3138407df Mon Sep 17 00:00:00 2001 From: wanghuan Date: Fri, 2 Nov 2018 10:35:20 +0800 Subject: [PATCH 2/3] modify again --- ...\263\225\345\210\206\346\236\220\345\237\272\347\241\200.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/\347\256\227\346\263\225\345\222\214\346\225\260\346\215\256\347\273\223\346\236\204\345\237\272\347\241\200/1 \347\256\227\346\263\225\345\210\206\346\236\220\345\237\272\347\241\200-Java/\347\256\227\346\263\225\345\210\206\346\236\220\345\237\272\347\241\200.md" "b/\347\256\227\346\263\225\345\222\214\346\225\260\346\215\256\347\273\223\346\236\204\345\237\272\347\241\200/1 \347\256\227\346\263\225\345\210\206\346\236\220\345\237\272\347\241\200-Java/\347\256\227\346\263\225\345\210\206\346\236\220\345\237\272\347\241\200.md" index f61569c..b831693 100644 --- "a/\347\256\227\346\263\225\345\222\214\346\225\260\346\215\256\347\273\223\346\236\204\345\237\272\347\241\200/1 \347\256\227\346\263\225\345\210\206\346\236\220\345\237\272\347\241\200-Java/\347\256\227\346\263\225\345\210\206\346\236\220\345\237\272\347\241\200.md" +++ "b/\347\256\227\346\263\225\345\222\214\346\225\260\346\215\256\347\273\223\346\236\204\345\237\272\347\241\200/1 \347\256\227\346\263\225\345\210\206\346\236\220\345\237\272\347\241\200-Java/\347\256\227\346\263\225\345\210\206\346\236\220\345\237\272\347\241\200.md" @@ -20,7 +20,7 @@ 那么,如何确定这个**输入规模$n$** 呢? - +在大多数情况下,这是显而易见的。例如,对于排序、查找等列表相关的算法,输入规模$n$就是列表的长度。 不过,有时候,还是要根据算法细节,具体问题具体分析。比如,对于大数计算的问题,因为计算机存储是二进制形式的,所以可以用二进制的比特位数,来表示输入规模。 From 86ecbd8922dec836999d797f0ae2b0980acb93ce Mon Sep 17 00:00:00 2001 From: wanghuan Date: Fri, 2 Nov 2018 14:09:41 +0800 Subject: [PATCH 3/3] add delay time to simulate write time-consuming --- .../code/java/BubbleSort.java" | 33 ++++++--- .../code/java/SelectionSort.java" | 58 +++++++++------ .../code/java/SortAlgorithm.java" | 17 +---- .../code/java/SortDemo1.java" | 73 ++++++------------- 4 files changed, 84 insertions(+), 97 deletions(-) diff --git "a/\347\256\227\346\263\225\345\222\214\346\225\260\346\215\256\347\273\223\346\236\204\345\237\272\347\241\200/3.1 \346\232\264\345\212\233\347\276\216\345\255\246-\346\216\222\345\272\217/code/java/BubbleSort.java" "b/\347\256\227\346\263\225\345\222\214\346\225\260\346\215\256\347\273\223\346\236\204\345\237\272\347\241\200/3.1 \346\232\264\345\212\233\347\276\216\345\255\246-\346\216\222\345\272\217/code/java/BubbleSort.java" index a60504d..50c4ce5 100644 --- "a/\347\256\227\346\263\225\345\222\214\346\225\260\346\215\256\347\273\223\346\236\204\345\237\272\347\241\200/3.1 \346\232\264\345\212\233\347\276\216\345\255\246-\346\216\222\345\272\217/code/java/BubbleSort.java" +++ "b/\347\256\227\346\263\225\345\222\214\346\225\260\346\215\256\347\273\223\346\236\204\345\237\272\347\241\200/3.1 \346\232\264\345\212\233\347\276\216\345\255\246-\346\216\222\345\272\217/code/java/BubbleSort.java" @@ -2,24 +2,37 @@ public class BubbleSort extends SortAlgorithm { - /** - * Sorts the input array. - * - * @param array Array to be sorted. - */ public void sort(int[] array) { for (int i = 0; i < array.length-1 ; i++) { for (int j = 0; j < array.length - 1 - i; j++) { - // check if we need to swap + // 交换 if (array[j] > array[j+1]) { + new Thread(new Runnable() { + public void run() { + while (true) { + test(); + try { + Thread.sleep(1); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + private void test() { + // TODO Auto-generated method stub + } + public Runnable start() { + // TODO Auto-generated method stub + return null; + } + }.start()); Integer temp = array[j]; array[j] = array[j+1]; array[j+1] = temp; } } } - - } // end of sort() - -} // end of class BubbleSort + } +} \ No newline at end of file diff --git "a/\347\256\227\346\263\225\345\222\214\346\225\260\346\215\256\347\273\223\346\236\204\345\237\272\347\241\200/3.1 \346\232\264\345\212\233\347\276\216\345\255\246-\346\216\222\345\272\217/code/java/SelectionSort.java" "b/\347\256\227\346\263\225\345\222\214\346\225\260\346\215\256\347\273\223\346\236\204\345\237\272\347\241\200/3.1 \346\232\264\345\212\233\347\276\216\345\255\246-\346\216\222\345\272\217/code/java/SelectionSort.java" index f38d398..eaf8116 100644 --- "a/\347\256\227\346\263\225\345\222\214\346\225\260\346\215\256\347\273\223\346\236\204\345\237\272\347\241\200/3.1 \346\232\264\345\212\233\347\276\216\345\255\246-\346\216\222\345\272\217/code/java/SelectionSort.java" +++ "b/\347\256\227\346\263\225\345\222\214\346\225\260\346\215\256\347\273\223\346\236\204\345\237\272\347\241\200/3.1 \346\232\264\345\212\233\347\276\216\345\255\246-\346\216\222\345\272\217/code/java/SelectionSort.java" @@ -1,28 +1,40 @@ +//SelectionSort.java import java.util.ArrayList; public class SelectionSort extends SortAlgorithm { - - /** - * Sort array. - * - * @param array Array to be sorted. - */ public void sort(int[] array) { - // IMPLEMENT ME - for (int i = 0; i < array.length - 1; ++i) - { - int min = i; - for (int j = i + 1; j < array.length; ++j ) - { - if (array[j] < array[min]) - min = j; - } - int temp = array[i]; - array[i] = array[min]; - array[min] = temp; - } + for (int i = 0; i < array.length - 1; ++i) + { + int min = i; + for (int j = i + 1; j < array.length; ++j ) + { + if (array[j] < array[min]) + min = j; + } - } // end of sort() - - -} // end of class SelectionSort + new Thread(new Runnable() { + public void run() { + while (true) { + test(); + try { + Thread.sleep(1); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + private void test() { + // TODO Auto-generated method stub + } + public Runnable start() { + // TODO Auto-generated method stub + return null; + } + }.start()); + int temp = array[i]; + array[i] = array[min]; + array[min] = temp; + } + } +} \ No newline at end of file diff --git "a/\347\256\227\346\263\225\345\222\214\346\225\260\346\215\256\347\273\223\346\236\204\345\237\272\347\241\200/3.1 \346\232\264\345\212\233\347\276\216\345\255\246-\346\216\222\345\272\217/code/java/SortAlgorithm.java" "b/\347\256\227\346\263\225\345\222\214\346\225\260\346\215\256\347\273\223\346\236\204\345\237\272\347\241\200/3.1 \346\232\264\345\212\233\347\276\216\345\255\246-\346\216\222\345\272\217/code/java/SortAlgorithm.java" index f4945d0..a25c876 100644 --- "a/\347\256\227\346\263\225\345\222\214\346\225\260\346\215\256\347\273\223\346\236\204\345\237\272\347\241\200/3.1 \346\232\264\345\212\233\347\276\216\345\255\246-\346\216\222\345\272\217/code/java/SortAlgorithm.java" +++ "b/\347\256\227\346\263\225\345\222\214\346\225\260\346\215\256\347\273\223\346\236\204\345\237\272\347\241\200/3.1 \346\232\264\345\212\233\347\276\216\345\255\246-\346\216\222\345\272\217/code/java/SortAlgorithm.java" @@ -1,22 +1,11 @@ - +//SortAlgorithm.java public abstract class SortAlgorithm { - /** - * Implement sort functionality. - * - * @param data Input integer array to be sorted. - */ public abstract void sort(int[] data); - - - /** - * Helper function to swap elements in array. - */ protected final void swap(int[] array, int i, int j) { int tmp = array[i]; array[i] = array[j]; array[j] = tmp; - } // end of swap() - -} // end of class SortAlgorithm + } +} \ No newline at end of file diff --git "a/\347\256\227\346\263\225\345\222\214\346\225\260\346\215\256\347\273\223\346\236\204\345\237\272\347\241\200/3.1 \346\232\264\345\212\233\347\276\216\345\255\246-\346\216\222\345\272\217/code/java/SortDemo1.java" "b/\347\256\227\346\263\225\345\222\214\346\225\260\346\215\256\347\273\223\346\236\204\345\237\272\347\241\200/3.1 \346\232\264\345\212\233\347\276\216\345\255\246-\346\216\222\345\272\217/code/java/SortDemo1.java" index 9887cca..203357b 100644 --- "a/\347\256\227\346\263\225\345\222\214\346\225\260\346\215\256\347\273\223\346\236\204\345\237\272\347\241\200/3.1 \346\232\264\345\212\233\347\276\216\345\255\246-\346\216\222\345\272\217/code/java/SortDemo1.java" +++ "b/\347\256\227\346\263\225\345\222\214\346\225\260\346\215\256\347\273\223\346\236\204\345\237\272\347\241\200/3.1 \346\232\264\345\212\233\347\276\216\345\255\246-\346\216\222\345\272\217/code/java/SortDemo1.java" @@ -1,3 +1,4 @@ +//SortDemo1.java import java.io.*; import java.util.*; @@ -6,69 +7,54 @@ public class SortDemo1 { protected static final String progName = "SortDemo1"; - /** Different modes that program can run. */ + /**可以调用的算法*/ public enum Mode { - BUB, - SELECT + BUB, + SELECT } - /** - * Print usage information. - * - * @param progName Program name. + 打印基本信息。 */ protected static void printUsage(String progName) { - System.err.println("USAGE: " + progName + " [sort method] [input file]"); - System.err.println(" sort methods [bubble, quick, merge, cocktail]"); - System.err.println("EXAMPLE: " + progName + " quick random.txt"); - } // end of printUsage() - - + System.err.println("USAGE: " + progName + " [sort method] [input file]"); + System.err.println(" sort methods [bubble, quick, merge, cocktail]"); + System.err.println("EXAMPLE: " + progName + " quick random.txt"); + } /** - * Main method. - * - * @param args Command line arguments. + * 主函数。接受命令行参数-包括算法名字和排序数据集 */ public static void main(String[] args) { try { - // not enough arguments if (args.length != 2) { printUsage(progName); System.exit(1); } - - // sorting algorithm to be used + // 获得排序算法名 String algorithmUsed = args[0]; - // input file to be sorted + // 获得需要排序的数据集 String fileName = args[1]; - - + File inFile = new File(fileName); Scanner in = new Scanner(inFile); - // buffer to read in data + // 从文件读入数据 ArrayList buffer = new ArrayList(); - while (in.hasNextInt()) { buffer.add(new Integer(in.nextInt())); } - // create array of int + // 使用读入的数据创建列表 int[] array = new int[buffer.size()]; - // copy buffer to array Iterator bit = buffer.iterator(); int j = 0; while (bit.hasNext()) { array[j] = (Integer) bit.next(); j++; } - - - // buffer memory no longer needed buffer = null; - // figure out with sorting algorithm we are using + // 选择合适的算法 SortAlgorithm sortAlgor = null; switch(algorithmUsed) { case "bubble": @@ -85,19 +71,13 @@ public static void main(String[] args) { } long startTime = System.nanoTime(); - - // do the sorting + // 排序 sortAlgor.sort(array); - long endTime = System.nanoTime(); - - - - // print out sorted array - for (int i = 0; i < array.length; i++) { - System.out.println(array[i]); - } - + // 打印排序后的数组 +// for (int i = 0; i < array.length; i++) { +// System.out.println(array[i]); +// } double timeElapsed = (endTime - startTime) / Math.pow(10, 9); System.out.println("Time elapsed (secs): " + timeElapsed); } @@ -105,12 +85,5 @@ public static void main(String[] args) { System.err.println(e.getMessage()); printUsage(progName); } - - } // end of main() - -} // end of class SortDemo1 - - - - - + } +} \ No newline at end of file