第三周作业——冒泡排序和归并排序
2014-03-27 10:33
387 查看
1. 冒泡排序
归并排序
package suanfa; import java.io.BufferedReader; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class bubbleSort { public static void main(String[] args) throws IOException { // 文件绝对路径 FileReader fr = new FileReader( "F:\\largeW.txt"); BufferedReader br = new BufferedReader(fr); List<String> list = new ArrayList<String>(); String rLine = ""; while ((rLine = br.readLine()) != null) { list.add(rLine); } int number[] = new int[list.size()]; for (int i = 0; i < list.size(); i++) { number[i] = Integer.parseInt(list.get(i).trim());// 逐个进行转换,剔除空格 } br.close(); long startTime = System.currentTimeMillis(); // 获取开始时间 // 冒泡排序 bubbleSort(number); long endTime = System.currentTimeMillis(); // 获取结束时间 //输出排序后的数据 for (int i = 0; i < list.size(); i++) { System.out.println(number[i]); } //将数组内数据写入到TXT文件中 FileWriter fileWriter = new FileWriter( "F:\\largeW_bubble.txt"); for (int i = 0; i < number.length; i++) { fileWriter.write(String.valueOf(number[i]) + " "); } fileWriter.flush(); fileWriter.close(); System.out.println("冒泡排序运行时间: " + (endTime - startTime) + "ms"); } public static void bubbleSort(int r[],int n){ exchange=n; while(exchange!=0) { bound=exchange;exchange=0; t = data[i]; data[i] = data[j]; data[j] = t; } } }
归并排序
import java.io.BufferedReader; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class mergeSort { public static void main(String[] args) throws IOException { // 文件绝对路径 FileReader fr = new FileReader( "F:\\largeW.txt"); BufferedReader br = new BufferedReader(fr); List<String> list = new ArrayList<String>(); String rLine = ""; while ((rLine = br.readLine()) != null) { list.add(rLine); } int number[] = new int[list.size()]; for (int i = 0; i < list.size(); i++) { number[i] = Integer.parseInt(list.get(i).trim());// 逐个进行转换,剔除空格 } br.close(); long startTime = System.currentTimeMillis(); // 获取开始时间 // 归并排序 mergeSort(number); long endTime = System.currentTimeMillis(); // 获取结束时间 //输出排序后的数据 for (int i = 0; i < list.size(); i++) { System.out.println(number[i]); } System.out.print(list.size()); //将数组内数据写入到TXT文件中 FileWriter fileWriter = new FileWriter( "F:\\largeW_merge.txt"); for (int i = 0; i < number.length; i++) { fileWriter.write(String.valueOf(number[i]) + " "); } fileWriter.flush(); fileWriter.close(); System.out.println("归并排序运行时间: " + (endTime - startTime) + "ms"); } public static void mergeSort(int[] data) { sort(data, 0, data.length - 1); } public static void sort(int[] data, int left, int right) { if (left >= right) return; // 找出中间索引 int center = (left + right) / 2; // 对左边数组进行递归 sort(data, left, center); // 对右边数组进行递归 sort(data, center + 1, right); // 合并 merge(data, left, center, right); //print(data); } public static void merge(int[] data, int left, int center, int right) { // 临时数组 int[] tmpArr = new int[data.length]; // 右数组第一个元素索引 int mid = center + 1; // third 记录临时数组的索引 int third = left; // 缓存左数组第一个元素的索引 int tmp = left; while (left <= center && mid <= right) { // 从两个数组中取出最小的放入临时数组 if (data[left] <= data[mid]) { tmpArr[third++] = data[left++]; } else { tmpArr[third++] = data[mid++]; } } // 剩余部分依次放入临时数组(实际上两个while只会执行其中一个) while (mid <= right) { tmpArr[third++] = data[mid++]; } while (left <= center) { tmpArr[third++] = data[left++]; } // 将临时数组中的内容拷贝回原数组中 // (原left-right范围的内容被复制回原数组) while (tmp <= right) { data[tmp] = tmpArr[tmp++]; } } }
相关文章推荐
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序(只完成冒泡算法)
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序(运行冒泡排序)
- 第三周作业——冒泡排序和归并排序(运行归并算法)
- 第三周作业——冒泡排序和归并排序
- 第三周作业-冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业 冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序