![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
经典算法
文章平均质量分 59
OracleDesire
这个作者很懒,什么都没留下…
展开
-
归并排序的Java实现
public class MergeSort { private static void mergeSort(int[] A, int start, int end) { if (start >= end) return; int mid = start + (end - start) / 2; mergeSort(A, start, mid); mergeSort(A,原创 2014-01-01 20:48:02 · 348 阅读 · 0 评论 -
在两个有序数组中寻找第k个元素
这个问题很经典,有必要好好梳理一下:函数的参数设定为,数组A,A的长度m,数组B,B的长度n,需要找的k。如果m + n 如果m和n其一为0,那么就应该返回另一个数组的k - 1位置的元素;否则,将A(近似地)平均分为两部分,记其分点下标为i = m / 2,B也如此做,其分点下标为j = n / 2。假设A[i] 如此,B[j]将不小于B中它之前的所有元素,并且也不小于A[i原创 2014-01-01 22:31:49 · 943 阅读 · 0 评论 -
Quick Sort的Java实现
public class QuickSort { private static void quickSort(int[] A, int start, int end) { if (start >= end) return; int pivot = A[start]; int i = start, j = end; while (i < j) { while (j >原创 2014-01-01 20:47:09 · 595 阅读 · 0 评论 -
利用快速排序的思想寻找乱序数组第k大数
首先选择轴值,利用快速排序思路将轴值放到合适位置,如果轴值位置恰好在第k位置上,那么轴值便是需要找的值,否则,如果轴值位置大于k,说明要找的数在左半部分;反之则在右半部分。import java.util.Collections;import java.util.Vector;public class FindKth { private static int findKth(int[]原创 2014-01-01 20:52:53 · 577 阅读 · 0 评论 -
求数组中的逆序对数目(POJ1007)
这个题真心写丑了,不过当做练习还是很不错的。思想就是利用归并排序的办法,先计算左右两个子数组的逆序对数目,把他们加起来。然后用两个指针指向子数组的头,如果前面的子数组目前元素较大,就把后面子数组的头部元素插入结果数组;否则,前面的元素应该进入结果数组了,此时,结果数组里的后面子数组元素个数即为此元素造成的逆序对的个数。#include #include #include #inclu原创 2014-01-07 15:49:09 · 525 阅读 · 0 评论 -
非递归遍历二叉树
前序遍历:/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class原创 2014-01-09 23:20:37 · 752 阅读 · 0 评论