대학 생활/JAVA
[JAVA] HeapSort Algorithm
opid
2014. 7. 9. 16:13
Heap Sort Algorithm Source
package heapSort; import java.io.BufferedReader; import java.io.FileReader; import java.util.ArrayList; import java.util.List; public class Star { public static void main(String args[]) { ArrayList<String> data = new ArrayList<String>(); String file_open_path = "D:/heapData.txt"; fileRead(file_open_path, data); System.out.println(data); data = heapSort(data); System.out.println(data); } public static ArrayList<String> heapDown(ArrayList<String> data) { for (int n = (data.size() / 2) - 1; n >= 0; n--) { int leftChild = (n * 2) + 1; int rightChild = (n * 2) + 2; if (data.get(leftChild).compareTo(data.get(n)) < 0) { swapData(data, n, leftChild); } if (rightChild < data.size()) { if (data.get(rightChild).compareTo(data.get(n)) < 0) { swapData(data, n, rightChild); } } } return data; } public static ArrayList<String> heapSort(ArrayList<String> data) { ArrayList<String> sortedData = new ArrayList<String>(); int len = data.size(); data = heapDown(data); for (int i = 0; i < len; i++) { sortedData.add(0, data.remove(0)); data = heapDown(data); } return sortedData; } private static void fileRead(String path, List<String> data) { BufferedReader reader = null; if (path != null) { try { reader = new BufferedReader(new FileReader(path)); String line = null; while ((line = reader.readLine()) != null) { if (line.charAt(0) == 65279) { data.add(new String(new StringBuffer(line) .deleteCharAt(0))); } else { data.add(line); } } reader.close(); } catch (Exception e) { System.err.println(e); } finally { try { if (reader != null) { reader.close(); } } catch (Exception ex) { } } } } private static void swapData(ArrayList<String> data, int a, int b) { String temp; temp = data.get(a); data.set(a, data.get(b)); data.set(b, temp); } }