摘要: /** *选择排序: * 对冒泡排序的一个改进 * 进行一趟排序时,不用每一次都交换,只需要把最大的标示记下 * 然后再进行一次交换 */public class SelectSort{ /** *选择排序主方法 * */ public static void selectSort(int[] resouceArr) { for(int i = resouceArr.length - 1 ; i >= 0 ; i-- ) { int max = 0 ; ... 阅读全文
posted @ 2013-11-04 19:07 天蓝印象 阅读(250) 评论(0) 推荐(0) 编辑
摘要: import java.util.Random ; /** *快速排序思路:用到了分治法 * 一个数组A[0,n-1] 分解为三个部分,A[0,p - 1] , A[p] , A[p + 1, n-1] * 递归调用快速排序,对A[0,p - 1]和A[p + 1,n-1]进行排序 * */public class QuickSort{ /** *快速排序主方法 * */ public static void quickSort(int[] resouceArr , int begin , int end) { ... 阅读全文
posted @ 2013-11-04 19:05 天蓝印象 阅读(284) 评论(0) 推荐(0) 编辑
摘要: /** *归并排序思路:分治法思想 O(nlogn) * 把数组一分为二,二分为四 * 四和为二,二和为一 * *//** * 归并排序主方法 *@params 待排序的数组 *@params 初始位置 *@params 最终位置 */public class MergeSort{ public static void mergeSort(int[] resouceArr, int begin , int end ) { if ( begin < end ) ... 阅读全文
posted @ 2013-11-04 19:04 天蓝印象 阅读(204) 评论(0) 推荐(0) 编辑
摘要: /** *堆排序思路:O(nlogn) * 用最大堆,传入一个数组,先用数组建堆,维护堆的性质 * 再把第一个数与堆最后一个数调换,因为第一个数是最大的 * 把堆的大小减小一 * 再 在堆的大小上维护堆的性质 * 重复操作.. * * */public class HeapSort{ /** *静态变量存放堆的大小 */ private static int heapsize = 0 ; /** *堆排序主方法 * 构建最大堆,然后进行堆排序 * 堆排序是把最... 阅读全文
posted @ 2013-11-04 18:52 天蓝印象 阅读(182) 评论(0) 推荐(0) 编辑
摘要: /** *插入排序思路:O(n^2)* 最外层一个循环,从第二个数到最后一个,变量为i* 每个数存储在key变量中* 变量j,是左边已经排好序的数组的上限* 判断key与前面每一个数比较 1,3,5,2,4,6,8,5,9,10* 《-------* 如果key小于前一个并且已经排好序的数组没有越界 * 调换两个数* j向左移* * 把key放在指定位置 j+1**/public ... 阅读全文
posted @ 2013-11-04 18:51 天蓝印象 阅读(197) 评论(0) 推荐(0) 编辑
摘要: /** *冒泡排序: * 两个两个比较,一轮过后最大的排在了最后面 * n个数变为n-1个没排好的数 * 再进行一轮 * 第二大的排在了倒数第二个 * 以此类推 * 直到排到第一个为止 * * 弄两个循环,相邻两个数比较 */public class BubbleSort{ /** *冒泡排序主方法 * */ public static void bubbleSort(int[] resouceArr) { for(int i = 0 ; i resouceArr[j+1]) ... 阅读全文
posted @ 2013-11-04 18:49 天蓝印象 阅读(232) 评论(0) 推荐(0) 编辑