- 博客(22)
- 资源 (1)
- 收藏
- 关注
原创 泛洪填充
/** * 泛洪填充--使用深度遍历 * @param g * @param x * @param y * @param color */ public static void floodFill(int[][] g,int x,int y,int color){ g[x][y]=color; if(x>0 && g[x-1][y]==0) floodFil
2014-09-13 22:38:44 457
原创 深度优先遍历
/** * 深度优先遍历 * @param graph * @param start */ public static void DFS(int[][] graph,int start){ BitSet flags = new BitSet(graph.length); DFSA(graph, start, flags); } private static voi
2014-09-13 22:37:26 438
原创 广度优先遍历
/** * 广度优先遍历--使用标记 * @param graph * @param start */ public static void BFS1(int[][] graph,int start){ LinkedList queue = new LinkedList(); BitSet flags = new BitSet(graph.length);
2014-09-13 22:36:40 372
原创 树形选择排序
/** * 树形选择排序 --元素要2^n个,不够补,如无穷大 * * @param a */ public static void treeSelectionSort(int[] a) { int n = (int) (Math.log(a.length) / Math.log(2)) + 1; int[][] b = new int[n + 1][]; f
2014-09-12 20:47:17 339
原创 鸽巢排序
/** * 鸽巢排序 --针对=0的数字 * * @param a */ public static void pigeonholeSort(int[] a) { int[] b = new int[100]; for (int i = 0; i < a.length; i++) { // 计数 b[a[i]]++; } int n = 0; for
2014-09-12 20:47:14 350
原创 珠排序
/** * 珠排序 --0到10的数字 * * @param a */ public static void beadSort(int[] a) { int[] b = new int[10]; // 10个串 for (int i = 0; i < a.length; i++) { // 数据分配到串 int count = 0; for (int j
2014-09-12 20:46:14 377
原创 桶排序
/** * 桶排序 * 针对<100的数,桶宽为10,桶数为10,映射函数为f(x)=x/10 * @param a */ public static void bucketSort(int[] a){ ArrayList[] buckets = new ArrayList[10]; for(int i=0;i<10;i++){ //建桶 buckets[i] =
2014-09-11 23:51:06 250
原创 基数排序
/** * 基数排序 --针对三位正整数,低位优先级低,高位优先级高 * * @param a */ public static void radixSort(int[] a) { // 基数排序用于多关键字排序,实在想不出个好场景 class WrapInt { int num; int n1; int n2; int n3; publ
2014-09-11 23:50:15 228
原创 计数排序
/** * 计数排序 --只限数字小于100且大于等于0的数组 * * @param a */ public static void countingSort(int[] a) { int[] b = new int[a.length]; int[] c = new int[100]; for (int i = 0; i < a.length; i++) { //
2014-09-11 23:48:46 208
原创 希尔排序
public static void shellSort(int[] a) { for (int gap = a.length / 2; gap > 0; gap /= 2) { // 分配步长 for (int i = 0; i < gap; i++) { // 按步长分组 for (int j = i; j < a.length; j += gap) { // 插入排序
2014-09-11 23:46:45 201
原创 插入排序
public static void insertionSort(int[] a) { for (int i = 0; i < a.length; i++) { int pos = i; for (int j = i - 1; j > -1; j--) { // 找到前面可以插入的位置 if (a[i] < a[j]) { pos = j; } }
2014-09-11 23:45:37 228
原创 归并排序
public static void mergeSort(int[] a) { mergeSortA(a, 0, a.length - 1); } private static void mergeSortA(int[] a, int begin, int end) { if (end - begin > 0) { // 分别排序 int middle = begin +
2014-09-11 23:45:36 282
原创 堆排序
public static void heapSort(int[] a) { for (int i = (a.length - 2) / 2; i >= 0; i--) { // 从最后一个非叶子节点开始初始化堆 adjustHeap(a, a.length, i); } int[] tmp = new int[a.length]; for (int i = 0; i <
2014-09-11 23:44:37 237
原创 选择排序
public static void selectionSort(int[] a) { for (int i = 0; i < a.length - 1; i++) { // 只需排前面a.length-1个 int min = i; for (int j = i + 1; j < a.length; j++) { // 从i+1个开始往后找最小的 if (a[j] < a
2014-09-11 23:41:24 243
原创 快速排序
public static void quickSort(int[] a) { quickSortA(a, 0, a.length - 1); } private static void quickSortA(int[] a, int begin, int end) { if (begin < end) { int pivot = partition(a, begin, end
2014-09-11 23:40:08 248
原创 Bogo排序
public static void bogoSort(int[] a) { Random rd = new Random(System.currentTimeMillis()); boolean ordered = false; while (!ordered) { for (int i = 0; i < a.length; i++) { // shuffle swa
2014-09-11 23:38:30 327
原创 梳排序
public static void combSort(int[] a) { int gap = a.length; boolean ordered = false; // 判断是否排好序,排好序了就结束 while (gap > 1 || !ordered) { // 按照gap不断调整 if (gap > 1) { gap /= 1.3; } ordere
2014-09-11 23:35:19 268
原创 奇偶排序
public static void oddevenSort(int[] a) { boolean ordered = false; // 判断有没有排好序 while (!ordered) { ordered = true; for (int i = 1; i < a.length - 1; i += 2) { if (a[i] > a[i + 1]) {
2014-09-11 23:33:57 213
原创 臭皮匠排序
public static void stoogeSort(int[] a) { stoogeSortA(a, 0, a.length - 1); } private static void stoogeSortA(int[] a, int i, int j) { if (a[i] > a[j]) { swap(a, i, j); } if (j - i + 1 >=
2014-09-11 23:33:51 510
原创 地精排序
public static void gnomeSort(int[] a) { int i = 1; while (i < a.length) { if (a[i] >= a[i - 1]) { i++; } else { swap(a, i, i - 1); if (i > 1) //至少2才自减,起始是1 i--; } } }
2014-09-11 23:30:24 295
原创 冒泡排序
public static void bubbleSort(int[] a) { for (int i = 0; i < a.length - 1; i++) { // 只需要把a.length-1个放到最后面 for (int j = 0; j < a.length - 1 - i; j++) { // 只需到长度a.length-1-i个 if (a[j] > a[j + 1
2014-09-11 23:27:55 243
原创 鸡尾酒排序
public static void cocktailSort(int[] a) { for (int i = 0; i < a.length / 2; i++) { // 单数时只要一半之前,双数时要一半 for (int j = i; j < a.length - i - 1; j++) { // 找最大的放后面 if (a[j] > a[j + 1]) { sw
2014-09-11 23:27:53 257
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人