第三周作业——冒泡排序(BubbleSort)与归并排序(MergeSort)
2014-03-24 22:07
537 查看
一.冒泡排序(BubbleSort)
基本思想:两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素为止。
程序代码如下:
运行结果如下:
二.归并排序(MergeSort)
[b]基本思想:归并算法的中心是归并两个已经有序的数组,并且递归调用归并操作。
[/b]
[b][b]程序代码如下:[/b][/b]
运行结果如下:
[b][b]总结:这次试验没有按老师要求内容写,求出两种排序结果的运行时间,因为这两[/b][/b]
[b][b]
个算法搞了好久才明白一[/b][/b]点,对于排序时间参考其他同学,知道了归并算法
的效率更高,本次试验只给出算法原理和代码。
[b][b]
至于其中很多不足,希望通过以后的学习慢慢改善,希望老师能谅解。[/b][/b]
基本思想:两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素为止。
程序代码如下:
package 算法作业; public class BubbleSort{ public void bubble(int[] a) { for(int i=a.length-1;i>0;i--){ for(int j=0;j0){ swap(a,j,j+1); } } } } public void swap(int[] a,int x,int y) { int temp; temp=a[x]; a[x]=a[y]; a[y]=temp; } public static void main(String[] args){ int[] a = {3,5,9,4,7,8,6,1,2,10,0}; System.out.print("开始排序前的数列为:"); for(int num:a) { System.out.print(num + " "); } BubbleSort bubble = new BubbleSort(); bubble.bubble(a); System.out.println(); System.out.print("冒泡排序后的数列为:"); for(int num:a) { System.out.print(num + " "); } } }
运行结果如下:
二.归并排序(MergeSort)
[b]基本思想:归并算法的中心是归并两个已经有序的数组,并且递归调用归并操作。
[/b]
[b][b]程序代码如下:[/b][/b]
package 算法作业; public class MergeSort{ public void partition(Integer[] arr, int from, int end) { if (from < end) { int mid = (from + end) / 2; partition(arr, from, mid); partition(arr, mid + 1, end); merge(arr, from, end, mid); } } public void merge(Integer[] arr, int from, int end, int mid) { Integer[] tmpArr = new Integer[11]; int tmpArrIndex = 0; int part1ArrIndex = from; int part2ArrIndex = mid + 1; while ((part1ArrIndex <= mid) && (part2ArrIndex <= end)) { if (arr[part1ArrIndex] - arr[part2ArrIndex] < 0) { tmpArr[tmpArrIndex++] = arr[part1ArrIndex++]; } else { tmpArr[tmpArrIndex++] = arr[part2ArrIndex++]; } } while (part1ArrIndex <= mid) { tmpArr[tmpArrIndex++] = arr[part1ArrIndex++]; } while (part2ArrIndex <= end) { tmpArr[tmpArrIndex++] = arr[part2ArrIndex++]; } System.arraycopy(tmpArr, 0, arr, from, end - from + 1); } public static void main(String[] args) { Integer[] intgArr = {5,9,1,4,2,6,3,8,0,7,10}; System.out.print("开始排序前的数列为:"); for(Integer a:intgArr) { System.out.print(a + " "); } MergeSort insertSort = new MergeSort(); insertSort.partition(intgArr,0,intgArr.length-1); System.out.println(); System.out.print("归并排序后的数列为:"); for(Integer a:intgArr) { System.out.print(a + " "); } } }
运行结果如下:
[b][b]总结:这次试验没有按老师要求内容写,求出两种排序结果的运行时间,因为这两[/b][/b]
[b][b]
个算法搞了好久才明白一[/b][/b]点,对于排序时间参考其他同学,知道了归并算法
的效率更高,本次试验只给出算法原理和代码。
[b][b]
至于其中很多不足,希望通过以后的学习慢慢改善,希望老师能谅解。[/b][/b]
相关文章推荐
- 第三周作业——冒泡排序(BubbleSort)与归并排序(MergeSort)
- 算法第三次作业(1. 排序。对文件 largeW.txt(下载链接)中的数据,编程实现冒泡排序(方法名:bubbleSort) 与 归并排序(mergeSort),把排序后的结果分别保存到largeW
- 冒泡排序(方法名:bubbleSort) 与 归并排序(mergeSort)
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业:冒泡排序与归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序(计科1113练思安)
- 第三周作业——冒泡排序和归并排序
- 第三周----作业冒泡排序与归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业--冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- java-冒泡排序与归并排序(第三周作业)
- 第三周作业-冒泡排序与归并排序
- 第三周作业——冒泡排序和归并排序