冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。 这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。 原理: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 public static int[] BubbleSort(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { for (int j = 0; j < arr.length - 1 - i; j.... 常见排序算法 Java
二分查找 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。 首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。 public static void binarySearch(int[] arr, int target) { int start = 0; int end = arr.length - 1; boolean flag = true; while (start <= end) { int middle = (start + end) / 2; if (arr[middle] == target) { flag = false; System.out.println(middle); break; .... 常见查找算法 Java
质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数 普通方式 Boolean flag = true; for (int i = 1 ; i <100; i++) { for (int j = 2 ; j < i; j++) { if ( i%j == 0) { flag = false; break; } } if (flag) { System.out.println(i); } flag = true; } 优化一 根据定理:如果一个数是合数,那么它的最小质因数肯定小于等于他的平方根,可将判断范围缩小 Boolean flag = true; for (int i = 1 ; i <100; i++) { for (int j = 2 ; j < Math.sqrt(i); j++) { if ( i%j == 0) { flag = false; break; } } if (flag) { System.out.println(i); } flag = true; } 优化一(写法二) label: .... 求100以内的质数 Java