算法
s-010101
好好学习 好好生活
展开
-
java运用kmeans算法进行聚类
java运用kmeans算法进行聚类kmeans算法进行聚类大概步骤如下选出k值,随机出k个簇的中心点。分别计算每个点和k个中心点之间的欧式距离,就近归类。欧式距离计算方法如下:最终中心点集可以划分为k类,分别重新计算每类中新的中心点。重新计算的中心点坐标即把当前簇内所有点的x,y坐标分别加起来取平均值重复2,3步骤对所有点进行归类,如果当所有分类的质心点不再改变,则最终收敛。接下来以一个例子来进行说明:java代码参考这篇文章为了满足老师作业的要求进行了一定程度原创 2021-11-08 11:49:33 · 4960 阅读 · 0 评论 -
插值查找(递归非递归)
插值查找插值查找和二分查找类似,只是改变了mid的取值方式适用范围:单调数组(和二分查找一样)非递归 public static int insertValueSearch(int[] A,int left,int right,int key){ if (left > right || key < A[0] || key > A[A.length - 1]){ return -1; } //改变过后求中间下标的算原创 2021-11-06 18:46:12 · 128 阅读 · 0 评论 -
求先升后降数列的最大值(二分检索三分检索)
求先升后降数列的最大值适用范围:先升后降数组或单调递增数组二分检索非递归 public static int binarygetMax(int[] A) { if (A == null){ return -1; } int left = 0; int right = A.length - 1; while (left < right) { int mid =原创 2021-11-06 17:37:54 · 796 阅读 · 0 评论 -
java三分检索查找关键字(递归,非递归)
Java三分查找(有序数组)二分查找是确定一个中心点,将数据分为两半,每次减少一半数据三分查找确定两个中间点,将数据分为三半,每次减少三分之二数据 public static void main(String[] args) { int[] a = {1,3, 4, 5, 6, 8, 9, 10}; /* 注意这里传进去的high = a.length; 否则会查询不到最后一个元素 */ int inde原创 2021-11-06 16:23:23 · 400 阅读 · 0 评论 -
斐波那契数列迭代优化
斐波那契数列迭代求法根据第一二位的数字求出第三位的数字,在令以前一二位的数字等于二三位的数字,以此类推依次往后求。public static int FibonacciD(int num) { if(num <= 0) { return 0; } if(num == 1 || num == 2) { return 1; } int first = 1,second =1,third = 0; for(int i = 3; i<= num ;i++) {原创 2021-10-09 16:39:42 · 301 阅读 · 0 评论 -
java二分查找(循环和递归)
Java二分查找(折半查找)前提:已经排好序的序列思想:对于一个已经升序排序好的数组,直接折半,查看数组中间的元素,并且与需要查找的关键字进行比较,如果关键字大,则在折半数组的右半边进行查找,对于右半边数组再进行折半比较,如果关键字小,则在折半数组左半边再进行折半查找,重复以上操作java代码循环 /*这里我想返回查找到的关键字的下标以及关键字比较次数, 因此返回哈希表类型的数据 A[]:已经顺序排好的数组 key:我们需要查询的关键字*/ private M原创 2021-11-06 14:02:52 · 160 阅读 · 0 评论